diff --git a/src/com/android/settings/wifi/tether/WifiTetherSettings.java b/src/com/android/settings/wifi/tether/WifiTetherSettings.java index 88d601a082b..d8c39081c94 100644 --- a/src/com/android/settings/wifi/tether/WifiTetherSettings.java +++ b/src/com/android/settings/wifi/tether/WifiTetherSettings.java @@ -91,7 +91,8 @@ public class WifiTetherSettings extends RestrictedDashboardFragment @VisibleForTesting WifiTetherAutoOffPreferenceController mWifiTetherAutoOffPreferenceController; - private boolean mUnavailable; + @VisibleForTesting + boolean mUnavailable; private WifiRestriction mWifiRestriction; @VisibleForTesting TetherChangeReceiver mTetherChangeReceiver; @@ -139,6 +140,9 @@ public class WifiTetherSettings extends RestrictedDashboardFragment setIfOnlyAvailableForAdmins(true); mUnavailable = isUiRestricted() || !mWifiRestriction.isHotspotAvailable(getContext()); + if (mUnavailable) { + return; + } mWifiTetherViewModel = FeatureFactory.getFactory(getContext()).getWifiFeatureProvider() .getWifiTetherViewModel(this); @@ -342,7 +346,16 @@ public class WifiTetherSettings extends RestrictedDashboardFragment @Override protected boolean isPageSearchEnabled(Context context) { - if (context == null || !WifiUtils.canShowWifiHotspot(context)) return false; + if (context == null) { + return false; + } + UserManager userManager = context.getSystemService(UserManager.class); + if (userManager == null || !userManager.isAdminUser()) { + return false; + } + if (!WifiUtils.canShowWifiHotspot(context)) { + return false; + } return !FeatureFlagUtils.isEnabled(context, FeatureFlags.TETHER_ALL_IN_ONE); } diff --git a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSettingsTest.java b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSettingsTest.java index 5005f4c9d5a..75d49feafe4 100644 --- a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSettingsTest.java +++ b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSettingsTest.java @@ -146,6 +146,7 @@ public class WifiTetherSettingsTest { doReturn(mTetheringManager).when(mContext).getSystemService(Context.TETHERING_SERVICE); doReturn(WIFI_REGEXS).when(mTetheringManager).getTetherableWifiRegexs(); doReturn(mUserManager).when(mContext).getSystemService(Context.USER_SERVICE); + doReturn(true).when(mUserManager).isAdminUser(); when(mWifiRestriction.isTetherAvailable(mContext)).thenReturn(true); when(mWifiRestriction.isHotspotAvailable(mContext)).thenReturn(true); @@ -184,10 +185,22 @@ public class WifiTetherSettingsTest { verify(mSettings).finish(); } + @Test + @Config(shadows = ShadowRestrictedDashboardFragment.class) + public void onCreate_uiIsRestricted_shouldNotGetViewModel() { + mSettings.mWifiTetherViewModel = null; + when(mWifiRestriction.isHotspotAvailable(mContext)).thenReturn(false); + + mSettings.onCreate(null); + + assertThat(mSettings.mWifiTetherViewModel).isNull(); + } + @Test @Config(shadows = ShadowFragment.class) public void onStart_uiIsRestricted_removeAllPreferences() { spyWifiTetherSettings(); + mSettings.mUnavailable = true; mSettings.onStart(); @@ -306,13 +319,21 @@ public class WifiTetherSettingsTest { } @Test - public void isPageSearchEnabled_canShowWifiHotspot_returnTrue() { + public void isPageSearchEnabled_allReady_returnTrue() { setCanShowWifiHotspotCached(true); assertThat(WifiTetherSettings.SEARCH_INDEX_DATA_PROVIDER.isPageSearchEnabled(mContext)) .isTrue(); } + @Test + public void isPageSearchEnabled_isNotAdminUser_returnFalse() { + doReturn(false).when(mUserManager).isAdminUser(); + + assertThat(WifiTetherSettings.SEARCH_INDEX_DATA_PROVIDER.isPageSearchEnabled(mContext)) + .isFalse(); + } + @Test public void isPageSearchEnabled_canNotShowWifiHotspot_returnFalse() { setCanShowWifiHotspotCached(false); @@ -419,5 +440,10 @@ public class WifiTetherSettingsTest { public void onCreate(Bundle icicle) { // do nothing } + + @Implementation + public boolean isUiRestricted() { + return false; + } } }