Remove Fix connectivity menu for guest

- Don't add the Fix connectivity menu if the user is a guest.

Bug: 252995826
Test: manual test
make RunSettingsRoboTests ROBOTEST_FILTER=NetworkProviderSettingsTest

Change-Id: I42fbd4b931dfaaf42b9319d1085848405db9e1be
This commit is contained in:
Weng Su
2022-11-04 22:54:13 +08:00
parent 628f12c1ad
commit 79c1439361
2 changed files with 47 additions and 19 deletions

View File

@@ -212,6 +212,8 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
protected boolean mIsRestricted; protected boolean mIsRestricted;
@VisibleForTesting @VisibleForTesting
boolean mIsAdmin = true; boolean mIsAdmin = true;
@VisibleForTesting
boolean mIsGuest = false;
@VisibleForTesting @VisibleForTesting
AirplaneModeEnabler mAirplaneModeEnabler; AirplaneModeEnabler mAirplaneModeEnabler;
@@ -302,13 +304,14 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
addPreferences(); addPreferences();
mIsRestricted = isUiRestricted(); mIsRestricted = isUiRestricted();
mIsAdmin = isAdminUser(); updateUserType();
} }
private boolean isAdminUser() { private void updateUserType() {
final UserManager userManager = getSystemService(UserManager.class); UserManager userManager = getSystemService(UserManager.class);
if (userManager == null) return true; if (userManager == null) return;
return userManager.isAdminUser(); mIsAdmin = userManager.isAdminUser();
mIsGuest = userManager.isGuestUser();
} }
private void addPreferences() { private void addPreferences() {
@@ -1400,7 +1403,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
@Override @Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
if (!mAirplaneModeEnabler.isAirplaneModeOn()) { if (!mIsGuest && !mAirplaneModeEnabler.isAirplaneModeOn()) {
MenuItem item = menu.add(0, MENU_FIX_CONNECTIVITY, 0, R.string.fix_connectivity); MenuItem item = menu.add(0, MENU_FIX_CONNECTIVITY, 0, R.string.fix_connectivity);
item.setIcon(R.drawable.ic_repair_24dp); item.setIcon(R.drawable.ic_repair_24dp);
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
@@ -1447,6 +1450,11 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
} }
private void fixConnectivity() { private void fixConnectivity() {
if (mIsGuest) {
Log.e(TAG, "Can't reset network because the user is a guest.");
EventLog.writeEvent(0x534e4554, "252995826", UserHandle.myUserId(), "User is a guest");
return;
}
if (mInternetResetHelper == null) { if (mInternetResetHelper == null) {
mInternetResetHelper = new InternetResetHelper(getContext(), getLifecycle()); mInternetResetHelper = new InternetResetHelper(getContext(), getLifecycle());
mInternetResetHelper.setResettingPreference(mResetInternetPreference); mInternetResetHelper.setResettingPreference(mResetInternetPreference);

View File

@@ -15,6 +15,7 @@
*/ */
package com.android.settings.network; package com.android.settings.network;
import static com.android.settings.network.NetworkProviderSettings.MENU_FIX_CONNECTIVITY;
import static com.android.settings.network.NetworkProviderSettings.MENU_ID_DISCONNECT; import static com.android.settings.network.NetworkProviderSettings.MENU_ID_DISCONNECT;
import static com.android.settings.network.NetworkProviderSettings.MENU_ID_FORGET; import static com.android.settings.network.NetworkProviderSettings.MENU_ID_FORGET;
import static com.android.settings.network.NetworkProviderSettings.MENU_ID_MODIFY; import static com.android.settings.network.NetworkProviderSettings.MENU_ID_MODIFY;
@@ -135,6 +136,8 @@ public class NetworkProviderSettingsTest {
@Mock @Mock
private ContextMenu mContextMenu; private ContextMenu mContextMenu;
@Mock @Mock
private Menu mMenu;
@Mock
private MenuItem mMenuItem; private MenuItem mMenuItem;
@Mock @Mock
InternetUpdater mInternetUpdater; InternetUpdater mInternetUpdater;
@@ -147,6 +150,8 @@ public class NetworkProviderSettingsTest {
@Before @Before
public void setUp() { public void setUp() {
when(mMenu.add(anyInt(), anyInt(), anyInt(), anyInt())).thenReturn(mMenuItem);
mNetworkProviderSettings = spy(new NetworkProviderSettings() { mNetworkProviderSettings = spy(new NetworkProviderSettings() {
@Override @Override
boolean showAnySubscriptionInfo(Context context) { return true; } boolean showAnySubscriptionInfo(Context context) { return true; }
@@ -483,24 +488,39 @@ public class NetworkProviderSettingsTest {
} }
@Test @Test
public void onCreateOptionsMenu_airplanModeOn_fixConnectivityMenuInvisible() { public void onCreateOptionsMenu_isGuest_neverAddFixConnectivityMenu() {
doReturn(true).when(mAirplaneModeEnabler).isAirplaneModeOn(); mNetworkProviderSettings.mIsGuest = true;
final Menu menu = mock(Menu.class);
mNetworkProviderSettings.onCreateOptionsMenu(menu, null /* inflater */);
verify(menu, never()).add(anyInt(), eq(NetworkProviderSettings.MENU_FIX_CONNECTIVITY), mNetworkProviderSettings.onCreateOptionsMenu(mMenu, null /* inflater */);
anyInt(), eq(R.string.fix_connectivity));
verify(mMenu, never()).add(anyInt(), eq(MENU_FIX_CONNECTIVITY), anyInt(), anyInt());
} }
@Test @Test
public void onCreateOptionsMenu_airplanModeOff_fixConnectivityMenuVisible() { public void onCreateOptionsMenu_isNotGuest_addFixConnectivityMenu() {
doReturn(false).when(mAirplaneModeEnabler).isAirplaneModeOn(); mNetworkProviderSettings.mIsGuest = false;
final Menu menu = mock(Menu.class);
when(menu.add(anyInt(), anyInt(), anyInt(), anyInt())).thenReturn(mock(MenuItem.class));
mNetworkProviderSettings.onCreateOptionsMenu(menu, null /* inflater */);
verify(menu).add(anyInt(), eq(NetworkProviderSettings.MENU_FIX_CONNECTIVITY), mNetworkProviderSettings.onCreateOptionsMenu(mMenu, null /* inflater */);
anyInt(), eq(R.string.fix_connectivity));
verify(mMenu).add(anyInt(), eq(MENU_FIX_CONNECTIVITY), anyInt(), anyInt());
}
@Test
public void onCreateOptionsMenu_isAirplaneModeOn_neverAddFixConnectivityMenu() {
doReturn(true).when(mAirplaneModeEnabler).isAirplaneModeOn();
mNetworkProviderSettings.onCreateOptionsMenu(mMenu, null /* inflater */);
verify(mMenu, never()).add(anyInt(), eq(MENU_FIX_CONNECTIVITY), anyInt(), anyInt());
}
@Test
public void onCreateOptionsMenu_isNotAirplaneModeOn_addFixConnectivityMenu() {
doReturn(false).when(mAirplaneModeEnabler).isAirplaneModeOn();
mNetworkProviderSettings.onCreateOptionsMenu(mMenu, null /* inflater */);
verify(mMenu).add(anyInt(), eq(MENU_FIX_CONNECTIVITY), anyInt(), anyInt());
} }
@Test @Test