From 30009434322e51f464b0e70230efd3a486ddbf51 Mon Sep 17 00:00:00 2001 From: Lei Yu Date: Mon, 15 Apr 2019 15:10:38 -0700 Subject: [PATCH] Hide Mobile preference for secondary user Fixes: 128917967 Test: RunSettingsRoboTests Change-Id: Ibb95e3f0f42a8c484807a286bc77e8764eb31fcf --- .../network/MobileNetworkSummaryController.java | 5 ++++- .../MobileNetworkSummaryControllerTest.java | 17 +++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/network/MobileNetworkSummaryController.java b/src/com/android/settings/network/MobileNetworkSummaryController.java index df743b3cee4..ae115ebb727 100644 --- a/src/com/android/settings/network/MobileNetworkSummaryController.java +++ b/src/com/android/settings/network/MobileNetworkSummaryController.java @@ -21,6 +21,7 @@ import static androidx.lifecycle.Lifecycle.Event.ON_RESUME; import android.content.Context; import android.content.Intent; +import android.os.UserManager; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.telephony.euicc.EuiccManager; @@ -49,6 +50,7 @@ public class MobileNetworkSummaryController extends AbstractPreferenceController private static final String KEY = "mobile_network_list"; private SubscriptionManager mSubscriptionManager; + private UserManager mUserManager; private SubscriptionsChangeListener mChangeListener; private AddPreference mPreference; @@ -70,6 +72,7 @@ public class MobileNetworkSummaryController extends AbstractPreferenceController public MobileNetworkSummaryController(Context context, Lifecycle lifecycle) { super(context); mSubscriptionManager = context.getSystemService(SubscriptionManager.class); + mUserManager = context.getSystemService(UserManager.class); if (lifecycle != null) { mChangeListener = new SubscriptionsChangeListener(context, this); lifecycle.addObserver(this); @@ -162,7 +165,7 @@ public class MobileNetworkSummaryController extends AbstractPreferenceController @Override public boolean isAvailable() { - return !Utils.isWifiOnly(mContext); + return !Utils.isWifiOnly(mContext) && mUserManager.isAdminUser(); } @Override diff --git a/tests/robotests/src/com/android/settings/network/MobileNetworkSummaryControllerTest.java b/tests/robotests/src/com/android/settings/network/MobileNetworkSummaryControllerTest.java index ad66a8f43d1..b8ba63c752c 100644 --- a/tests/robotests/src/com/android/settings/network/MobileNetworkSummaryControllerTest.java +++ b/tests/robotests/src/com/android/settings/network/MobileNetworkSummaryControllerTest.java @@ -31,6 +31,7 @@ import android.app.Activity; import android.content.Context; import android.content.Intent; import android.net.ConnectivityManager; +import android.os.UserManager; import android.provider.Settings; import android.telephony.SubscriptionInfo; import android.telephony.TelephonyManager; @@ -65,6 +66,8 @@ public class MobileNetworkSummaryControllerTest { private EuiccManager mEuiccManager; @Mock private PreferenceScreen mPreferenceScreen; + @Mock + private UserManager mUserManager; private AddPreference mPreference; private Context mContext; @@ -76,6 +79,7 @@ public class MobileNetworkSummaryControllerTest { mContext = spy(Robolectric.setupActivity(Activity.class)); when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager); when(mContext.getSystemService(EuiccManager.class)).thenReturn(mEuiccManager); + when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager); when(mTelephonyManager.getNetworkCountryIso()).thenReturn(""); when(mEuiccManager.isEnabled()).thenReturn(true); Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.EUICC_PROVISIONED, 1); @@ -97,9 +101,22 @@ public class MobileNetworkSummaryControllerTest { final ConnectivityManager cm = mock(ConnectivityManager.class); when(cm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)).thenReturn(false); when(mContext.getSystemService(ConnectivityManager.class)).thenReturn(cm); + when(mUserManager.isAdminUser()).thenReturn(true); + 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 public void getSummary_noSubscriptions_correctSummaryAndClickHandler() { mController.displayPreference(mPreferenceScreen);