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

This commit is contained in:
Weng Su
2022-07-27 04:31:05 +00:00
committed by Android (Google) Code Review
2 changed files with 54 additions and 1 deletions

View File

@@ -18,11 +18,15 @@ package com.android.settings.wifi;
import android.app.Dialog; import android.app.Dialog;
import android.app.settings.SettingsEnums; import android.app.settings.SettingsEnums;
import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.net.wifi.WifiManager; import android.net.wifi.WifiManager;
import android.os.Bundle; import android.os.Bundle;
import android.os.UserManager;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.EventLog;
import android.util.Log;
import android.view.WindowManager; import android.view.WindowManager;
import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting;
@@ -39,6 +43,7 @@ import com.android.settingslib.wifi.WifiPermissionChecker;
* This activity requests users permission to allow scanning even when Wi-Fi is turned off * This activity requests users permission to allow scanning even when Wi-Fi is turned off
*/ */
public class WifiScanModeActivity extends FragmentActivity { public class WifiScanModeActivity extends FragmentActivity {
private static final String TAG = "WifiScanModeActivity";
private DialogFragment mDialog; private DialogFragment mDialog;
@VisibleForTesting @VisibleForTesting
String mApp; String mApp;
@@ -78,7 +83,15 @@ public class WifiScanModeActivity extends FragmentActivity {
mApp = Utils.getApplicationLabel(getApplicationContext(), packageName).toString(); mApp = Utils.getApplicationLabel(getApplicationContext(), packageName).toString();
} }
private void createDialog() { @VisibleForTesting
void createDialog() {
if (isGuestUser(getApplicationContext())) {
Log.e(TAG, "Guest user is not allowed to configure Wi-Fi Scan Mode!");
EventLog.writeEvent(0x534e4554, "235601169", -1 /* UID */, "User is a guest");
finish();
return;
}
if (mDialog == null) { if (mDialog == null) {
mDialog = AlertDialogFragment.newInstance(mApp); mDialog = AlertDialogFragment.newInstance(mApp);
mDialog.show(getSupportFragmentManager(), "dialog"); mDialog.show(getSupportFragmentManager(), "dialog");
@@ -169,4 +182,11 @@ public class WifiScanModeActivity extends FragmentActivity {
((WifiScanModeActivity) getActivity()).doNegativeClick(); ((WifiScanModeActivity) getActivity()).doNegativeClick();
} }
} }
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,11 +18,17 @@ package com.android.settings.wifi;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy; import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import android.content.Context;
import android.os.UserManager;
import android.text.TextUtils; import android.text.TextUtils;
import androidx.test.core.app.ApplicationProvider;
import com.android.settings.testutils.shadow.ShadowUtils; import com.android.settings.testutils.shadow.ShadowUtils;
import com.android.settingslib.wifi.WifiPermissionChecker; import com.android.settingslib.wifi.WifiPermissionChecker;
@@ -32,6 +38,7 @@ import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.Spy;
import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule; import org.mockito.junit.MockitoRule;
import org.robolectric.Robolectric; import org.robolectric.Robolectric;
@@ -47,6 +54,10 @@ public class WifiScanModeActivityTest {
@Rule @Rule
public final MockitoRule mMockitoRule = MockitoJUnit.rule(); public final MockitoRule mMockitoRule = MockitoJUnit.rule();
@Spy
Context mContext = ApplicationProvider.getApplicationContext();
@Mock
UserManager mUserManager;
@Mock @Mock
WifiPermissionChecker mWifiPermissionChecker; WifiPermissionChecker mWifiPermissionChecker;
@@ -54,7 +65,11 @@ public class WifiScanModeActivityTest {
@Before @Before
public void setUp() { public void setUp() {
when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager);
when(mUserManager.isGuestUser()).thenReturn(false);
mActivity = spy(Robolectric.setupActivity(WifiScanModeActivity.class)); mActivity = spy(Robolectric.setupActivity(WifiScanModeActivity.class));
when(mActivity.getApplicationContext()).thenReturn(mContext);
mActivity.mWifiPermissionChecker = mWifiPermissionChecker; mActivity.mWifiPermissionChecker = mWifiPermissionChecker;
} }
@@ -87,4 +102,22 @@ public class WifiScanModeActivityTest {
assertThat(mActivity.mApp).isEqualTo(APP_LABEL); assertThat(mActivity.mApp).isEqualTo(APP_LABEL);
} }
@Test
public void createDialog_isNotGuestUser_shouldNotFinishDialog() {
when(mUserManager.isGuestUser()).thenReturn(false);
mActivity.createDialog();
verify(mActivity, never()).finish();
}
@Test
public void createDialog_isGuestUser_shouldFinishDialog() {
when(mUserManager.isGuestUser()).thenReturn(true);
mActivity.createDialog();
verify(mActivity).finish();
}
} }