Merge "Hide Mobile preference for secondary user" into qt-dev

This commit is contained in:
Lei Yu
2019-04-16 20:47:17 +00:00
committed by Android (Google) Code Review
2 changed files with 21 additions and 1 deletions

View File

@@ -21,6 +21,7 @@ import static androidx.lifecycle.Lifecycle.Event.ON_RESUME;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.UserManager;
import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager; import android.telephony.SubscriptionManager;
import android.telephony.euicc.EuiccManager; import android.telephony.euicc.EuiccManager;
@@ -49,6 +50,7 @@ public class MobileNetworkSummaryController extends AbstractPreferenceController
private static final String KEY = "mobile_network_list"; private static final String KEY = "mobile_network_list";
private SubscriptionManager mSubscriptionManager; private SubscriptionManager mSubscriptionManager;
private UserManager mUserManager;
private SubscriptionsChangeListener mChangeListener; private SubscriptionsChangeListener mChangeListener;
private AddPreference mPreference; private AddPreference mPreference;
@@ -70,6 +72,7 @@ public class MobileNetworkSummaryController extends AbstractPreferenceController
public MobileNetworkSummaryController(Context context, Lifecycle lifecycle) { public MobileNetworkSummaryController(Context context, Lifecycle lifecycle) {
super(context); super(context);
mSubscriptionManager = context.getSystemService(SubscriptionManager.class); mSubscriptionManager = context.getSystemService(SubscriptionManager.class);
mUserManager = context.getSystemService(UserManager.class);
if (lifecycle != null) { if (lifecycle != null) {
mChangeListener = new SubscriptionsChangeListener(context, this); mChangeListener = new SubscriptionsChangeListener(context, this);
lifecycle.addObserver(this); lifecycle.addObserver(this);
@@ -162,7 +165,7 @@ public class MobileNetworkSummaryController extends AbstractPreferenceController
@Override @Override
public boolean isAvailable() { public boolean isAvailable() {
return !Utils.isWifiOnly(mContext); return !Utils.isWifiOnly(mContext) && mUserManager.isAdminUser();
} }
@Override @Override

View File

@@ -31,6 +31,7 @@ import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.net.ConnectivityManager; import android.net.ConnectivityManager;
import android.os.UserManager;
import android.provider.Settings; import android.provider.Settings;
import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionInfo;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
@@ -65,6 +66,8 @@ public class MobileNetworkSummaryControllerTest {
private EuiccManager mEuiccManager; private EuiccManager mEuiccManager;
@Mock @Mock
private PreferenceScreen mPreferenceScreen; private PreferenceScreen mPreferenceScreen;
@Mock
private UserManager mUserManager;
private AddPreference mPreference; private AddPreference mPreference;
private Context mContext; private Context mContext;
@@ -76,6 +79,7 @@ public class MobileNetworkSummaryControllerTest {
mContext = spy(Robolectric.setupActivity(Activity.class)); mContext = spy(Robolectric.setupActivity(Activity.class));
when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager); when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager);
when(mContext.getSystemService(EuiccManager.class)).thenReturn(mEuiccManager); when(mContext.getSystemService(EuiccManager.class)).thenReturn(mEuiccManager);
when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager);
when(mTelephonyManager.getNetworkCountryIso()).thenReturn(""); when(mTelephonyManager.getNetworkCountryIso()).thenReturn("");
when(mEuiccManager.isEnabled()).thenReturn(true); when(mEuiccManager.isEnabled()).thenReturn(true);
Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.EUICC_PROVISIONED, 1); Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.EUICC_PROVISIONED, 1);
@@ -97,9 +101,22 @@ public class MobileNetworkSummaryControllerTest {
final ConnectivityManager cm = mock(ConnectivityManager.class); final ConnectivityManager cm = mock(ConnectivityManager.class);
when(cm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)).thenReturn(false); when(cm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)).thenReturn(false);
when(mContext.getSystemService(ConnectivityManager.class)).thenReturn(cm); when(mContext.getSystemService(ConnectivityManager.class)).thenReturn(cm);
when(mUserManager.isAdminUser()).thenReturn(true);
assertThat(mController.isAvailable()).isFalse(); assertThat(mController.isAvailable()).isFalse();
} }
@Test
public void isAvailable_secondaryUser_notAvailable() {
final ConnectivityManager cm = mock(ConnectivityManager.class);
when(cm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)).thenReturn(true);
when(mContext.getSystemService(ConnectivityManager.class)).thenReturn(cm);
when(mUserManager.isAdminUser()).thenReturn(false);
assertThat(mController.isAvailable()).isFalse();
}
@Test @Test
public void getSummary_noSubscriptions_correctSummaryAndClickHandler() { public void getSummary_noSubscriptions_correctSummaryAndClickHandler() {
mController.displayPreference(mPreferenceScreen); mController.displayPreference(mPreferenceScreen);