Merge "Restrict AddAppNetworksActivity for guest user" into tm-qpr-dev

This commit is contained in:
TreeHugger Robot
2022-06-21 17:04:33 +00:00
committed by Android (Google) Code Review
2 changed files with 55 additions and 8 deletions

View File

@@ -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();
}
}

View File

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