diff --git a/src/com/android/settings/wifi/addappnetworks/AddAppNetworksActivity.java b/src/com/android/settings/wifi/addappnetworks/AddAppNetworksActivity.java index 169bcb3d838..c52f75ec0e3 100644 --- a/src/com/android/settings/wifi/addappnetworks/AddAppNetworksActivity.java +++ b/src/com/android/settings/wifi/addappnetworks/AddAppNetworksActivity.java @@ -18,11 +18,14 @@ package com.android.settings.wifi.addappnetworks; 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 @@ public class AddAppNetworksActivity extends FragmentActivity { } @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 @@ public class AddAppNetworksActivity extends FragmentActivity { 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 8391b8aa8dd..dccd0234f65 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 @@ package com.android.settings.wifi.addappnetworks; 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 @@ public class AddAppNetworksActivityTest { @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 @@ public class AddAppNetworksActivityTest { 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);