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);