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
diff --git a/src/com/android/settings/network/NetworkProviderSettings.java b/src/com/android/settings/network/NetworkProviderSettings.java
index 19ebd36..b622a3c 100644
--- a/src/com/android/settings/network/NetworkProviderSettings.java
+++ b/src/com/android/settings/network/NetworkProviderSettings.java
@@ -212,6 +212,8 @@
     protected boolean mIsRestricted;
     @VisibleForTesting
     boolean mIsAdmin = true;
+    @VisibleForTesting
+    boolean mIsGuest = false;
 
     @VisibleForTesting
     AirplaneModeEnabler mAirplaneModeEnabler;
@@ -302,13 +304,14 @@
         addPreferences();
 
         mIsRestricted = isUiRestricted();
-        mIsAdmin = isAdminUser();
+        updateUserType();
     }
 
-    private boolean isAdminUser() {
-        final UserManager userManager = getSystemService(UserManager.class);
-        if (userManager == null) return true;
-        return userManager.isAdminUser();
+    private void updateUserType() {
+        UserManager userManager = getSystemService(UserManager.class);
+        if (userManager == null) return;
+        mIsAdmin = userManager.isAdminUser();
+        mIsGuest = userManager.isGuestUser();
     }
 
     private void addPreferences() {
@@ -1400,7 +1403,7 @@
 
     @Override
     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);
             item.setIcon(R.drawable.ic_repair_24dp);
             item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
@@ -1447,6 +1450,11 @@
     }
 
     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) {
             mInternetResetHelper = new InternetResetHelper(getContext(), getLifecycle());
             mInternetResetHelper.setResettingPreference(mResetInternetPreference);
diff --git a/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java b/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java
index b347ac0..5573ca3 100644
--- a/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java
@@ -15,6 +15,7 @@
  */
 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_FORGET;
 import static com.android.settings.network.NetworkProviderSettings.MENU_ID_MODIFY;
@@ -135,6 +136,8 @@
     @Mock
     private ContextMenu mContextMenu;
     @Mock
+    private Menu mMenu;
+    @Mock
     private MenuItem mMenuItem;
     @Mock
     InternetUpdater mInternetUpdater;
@@ -147,6 +150,8 @@
 
     @Before
     public void setUp() {
+        when(mMenu.add(anyInt(), anyInt(), anyInt(), anyInt())).thenReturn(mMenuItem);
+
         mNetworkProviderSettings = spy(new NetworkProviderSettings() {
             @Override
             boolean showAnySubscriptionInfo(Context context) { return true; }
@@ -483,24 +488,39 @@
     }
 
     @Test
-    public void onCreateOptionsMenu_airplanModeOn_fixConnectivityMenuInvisible() {
-        doReturn(true).when(mAirplaneModeEnabler).isAirplaneModeOn();
-        final Menu menu = mock(Menu.class);
-        mNetworkProviderSettings.onCreateOptionsMenu(menu, null /* inflater */);
+    public void onCreateOptionsMenu_isGuest_neverAddFixConnectivityMenu() {
+        mNetworkProviderSettings.mIsGuest = true;
 
-        verify(menu, never()).add(anyInt(), eq(NetworkProviderSettings.MENU_FIX_CONNECTIVITY),
-            anyInt(), eq(R.string.fix_connectivity));
+        mNetworkProviderSettings.onCreateOptionsMenu(mMenu, null /* inflater */);
+
+        verify(mMenu, never()).add(anyInt(), eq(MENU_FIX_CONNECTIVITY), anyInt(), anyInt());
     }
 
     @Test
-    public void onCreateOptionsMenu_airplanModeOff_fixConnectivityMenuVisible() {
-        doReturn(false).when(mAirplaneModeEnabler).isAirplaneModeOn();
-        final Menu menu = mock(Menu.class);
-        when(menu.add(anyInt(), anyInt(), anyInt(), anyInt())).thenReturn(mock(MenuItem.class));
-        mNetworkProviderSettings.onCreateOptionsMenu(menu, null /* inflater */);
+    public void onCreateOptionsMenu_isNotGuest_addFixConnectivityMenu() {
+        mNetworkProviderSettings.mIsGuest = false;
 
-        verify(menu).add(anyInt(), eq(NetworkProviderSettings.MENU_FIX_CONNECTIVITY),
-            anyInt(), eq(R.string.fix_connectivity));
+        mNetworkProviderSettings.onCreateOptionsMenu(mMenu, null /* inflater */);
+
+        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