Merge "Restrict WifiScanModeActivity for guest user" into tm-qpr-dev
This commit is contained in:
@@ -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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user