Merge "Restrict AddAppNetworksActivity for guest user" into tm-qpr-dev
diff --git a/src/com/android/settings/wifi/addappnetworks/AddAppNetworksActivity.java b/src/com/android/settings/wifi/addappnetworks/AddAppNetworksActivity.java
index 169bcb3..c52f75e 100644
--- a/src/com/android/settings/wifi/addappnetworks/AddAppNetworksActivity.java
+++ b/src/com/android/settings/wifi/addappnetworks/AddAppNetworksActivity.java
@@ -18,11 +18,14 @@
 
 import android.app.ActivityManager;
 import android.app.IActivityManager;
+import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
 import android.os.RemoteException;
+import android.os.UserManager;
 import android.provider.Settings;
 import android.text.TextUtils;
+import android.util.EventLog;
 import android.util.Log;
 import android.view.Gravity;
 import android.view.Window;
@@ -85,7 +88,13 @@
     }
 
     @VisibleForTesting
-    protected boolean showAddNetworksFragment() {
+    boolean showAddNetworksFragment() {
+        if (isGuestUser(getApplicationContext())) {
+            Log.e(TAG, "Guest user is not allowed to configure Wi-Fi!");
+            EventLog.writeEvent(0x534e4554, "224772678", -1 /* UID */, "User is a guest");
+            return false;
+        }
+
         if (!isAddWifiConfigAllow()) {
             Log.d(TAG, "Not allowed by Enterprise Restriction");
             return false;
@@ -130,4 +139,11 @@
     boolean isAddWifiConfigAllow() {
         return WifiEnterpriseRestrictionUtils.isAddWifiConfigAllowed(this);
     }
+
+    private static boolean isGuestUser(Context context) {
+        if (context == null) return false;
+        final UserManager userManager = context.getSystemService(UserManager.class);
+        if (userManager == null) return false;
+        return userManager.isGuestUser();
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/wifi/addappnetworks/AddAppNetworksActivityTest.java b/tests/robotests/src/com/android/settings/wifi/addappnetworks/AddAppNetworksActivityTest.java
index 8391b8a..dccd023 100644
--- a/tests/robotests/src/com/android/settings/wifi/addappnetworks/AddAppNetworksActivityTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/addappnetworks/AddAppNetworksActivityTest.java
@@ -18,24 +18,38 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
-import android.annotation.Nullable;
-import android.app.IActivityManager;
-import android.os.RemoteException;
-
 import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.when;
 
+import android.annotation.Nullable;
+import android.app.IActivityManager;
+import android.content.Context;
+import android.os.RemoteException;
+import android.os.UserManager;
+
+import androidx.test.core.app.ApplicationProvider;
+
 import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
+import org.mockito.Spy;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
 import org.robolectric.Robolectric;
 import org.robolectric.RobolectricTestRunner;
 
 @RunWith(RobolectricTestRunner.class)
 public class AddAppNetworksActivityTest {
 
+    @Rule
+    public final MockitoRule mMockitoRule = MockitoJUnit.rule();
+    @Spy
+    Context mContext = ApplicationProvider.getApplicationContext();
+    @Mock
+    UserManager mUserManager;
     @Mock
     private IActivityManager mIActivityManager;
 
@@ -43,10 +57,13 @@
 
     @Before
     public void setUp() {
-        MockitoAnnotations.initMocks(this);
+        when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager);
+        when(mUserManager.isGuestUser()).thenReturn(false);
 
-        mActivity = Robolectric.buildActivity(FakeAddAppNetworksActivity.class).create().get();
+        mActivity = spy(Robolectric.buildActivity(FakeAddAppNetworksActivity.class).create().get());
+        when(mActivity.getApplicationContext()).thenReturn(mContext);
         mActivity.mActivityManager = mIActivityManager;
+        fakeCallingPackage("com.android.settings");
     }
 
     @Test
@@ -84,6 +101,20 @@
         assertThat(mActivity.showAddNetworksFragment()).isFalse();
     }
 
+    @Test
+    public void showAddNetworksFragment_isGuestUser_returnFalse() {
+        when(mUserManager.isGuestUser()).thenReturn(true);
+
+        assertThat(mActivity.showAddNetworksFragment()).isFalse();
+    }
+
+    @Test
+    public void showAddNetworksFragment_notGuestUser_returnTrue() {
+        when(mUserManager.isGuestUser()).thenReturn(false);
+
+        assertThat(mActivity.showAddNetworksFragment()).isTrue();
+    }
+
     private void fakeCallingPackage(@Nullable String packageName) {
         try {
             when(mIActivityManager.getLaunchedFromPackage(any())).thenReturn(packageName);