Restrict guest user to configure WiFi by QR code
- Don't show WifiDppConfiguratorActivity if the user is a guest. Bug: 224772890 Test: manual test make RunSettingsRoboTests ROBOTEST_FILTER=WifiDppConfiguratorActivityTest Change-Id: I160761edfe2893475676421ba2b59205da8d0224
This commit is contained in:
@@ -17,13 +17,16 @@
|
|||||||
package com.android.settings.wifi.dpp;
|
package com.android.settings.wifi.dpp;
|
||||||
|
|
||||||
import android.app.settings.SettingsEnums;
|
import android.app.settings.SettingsEnums;
|
||||||
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.net.wifi.WifiConfiguration;
|
import android.net.wifi.WifiConfiguration;
|
||||||
import android.net.wifi.WifiInfo;
|
import android.net.wifi.WifiInfo;
|
||||||
import android.net.wifi.WifiManager;
|
import android.net.wifi.WifiManager;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.os.UserManager;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
|
import android.util.EventLog;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
@@ -116,6 +119,13 @@ public class WifiDppConfiguratorActivity extends WifiDppBaseActivity implements
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void handleIntent(Intent intent) {
|
protected void handleIntent(Intent intent) {
|
||||||
|
if (isGuestUser(getApplicationContext())) {
|
||||||
|
Log.e(TAG, "Guest user is not allowed to configure Wi-Fi!");
|
||||||
|
EventLog.writeEvent(0x534e4554, "224772890", -1 /* UID */, "User is a guest");
|
||||||
|
finish();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
String action = intent != null ? intent.getAction() : null;
|
String action = intent != null ? intent.getAction() : null;
|
||||||
if (action == null) {
|
if (action == null) {
|
||||||
finish();
|
finish();
|
||||||
@@ -185,7 +195,8 @@ public class WifiDppConfiguratorActivity extends WifiDppBaseActivity implements
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void showQrCodeScannerFragment() {
|
@VisibleForTesting
|
||||||
|
void showQrCodeScannerFragment() {
|
||||||
WifiDppQrCodeScannerFragment fragment =
|
WifiDppQrCodeScannerFragment fragment =
|
||||||
(WifiDppQrCodeScannerFragment) mFragmentManager.findFragmentByTag(
|
(WifiDppQrCodeScannerFragment) mFragmentManager.findFragmentByTag(
|
||||||
WifiDppUtils.TAG_FRAGMENT_QR_CODE_SCANNER);
|
WifiDppUtils.TAG_FRAGMENT_QR_CODE_SCANNER);
|
||||||
@@ -384,4 +395,11 @@ public class WifiDppConfiguratorActivity extends WifiDppBaseActivity implements
|
|||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -16,16 +16,78 @@
|
|||||||
|
|
||||||
package com.android.settings.wifi.dpp;
|
package com.android.settings.wifi.dpp;
|
||||||
|
|
||||||
|
import static org.mockito.Mockito.doNothing;
|
||||||
|
import static org.mockito.Mockito.never;
|
||||||
|
import static org.mockito.Mockito.spy;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
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.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
import org.mockito.Mock;
|
||||||
|
import org.mockito.Spy;
|
||||||
|
import org.mockito.junit.MockitoJUnit;
|
||||||
|
import org.mockito.junit.MockitoRule;
|
||||||
import org.robolectric.Robolectric;
|
import org.robolectric.Robolectric;
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
public class WifiDppConfiguratorActivityTest {
|
public class WifiDppConfiguratorActivityTest {
|
||||||
|
|
||||||
|
@Rule
|
||||||
|
public final MockitoRule mMockitoRule = MockitoJUnit.rule();
|
||||||
|
@Spy
|
||||||
|
Context mContext = ApplicationProvider.getApplicationContext();
|
||||||
|
@Mock
|
||||||
|
UserManager mUserManager;
|
||||||
|
|
||||||
|
WifiDppConfiguratorActivity mActivity;
|
||||||
|
Intent mIntent;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setUp() {
|
||||||
|
when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager);
|
||||||
|
when(mUserManager.isGuestUser()).thenReturn(false);
|
||||||
|
|
||||||
|
mIntent = new Intent(WifiDppConfiguratorActivity.ACTION_CONFIGURATOR_QR_CODE_SCANNER);
|
||||||
|
mIntent.putExtra(WifiDppUtils.EXTRA_WIFI_SSID, "GoogleGuest");
|
||||||
|
mIntent.putExtra(WifiDppUtils.EXTRA_WIFI_SECURITY, "WPA");
|
||||||
|
mIntent.putExtra(WifiDppUtils.EXTRA_WIFI_PRE_SHARED_KEY, "\\012345678,");
|
||||||
|
|
||||||
|
mActivity = spy(Robolectric.setupActivity(WifiDppConfiguratorActivity.class));
|
||||||
|
when(mActivity.getApplicationContext()).thenReturn(mContext);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void launchActivity_noIntentAction_shouldNotFatalException() {
|
public void launchActivity_noIntentAction_shouldNotFatalException() {
|
||||||
WifiDppConfiguratorActivity wifiDppConfiguratorActivity =
|
WifiDppConfiguratorActivity wifiDppConfiguratorActivity =
|
||||||
Robolectric.setupActivity(WifiDppConfiguratorActivity.class);
|
Robolectric.setupActivity(WifiDppConfiguratorActivity.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void handleIntent_isGuestUser_shouldFinish() {
|
||||||
|
when(mUserManager.isGuestUser()).thenReturn(true);
|
||||||
|
|
||||||
|
mActivity.handleIntent(mIntent);
|
||||||
|
|
||||||
|
verify(mActivity).finish();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void handleIntent_notGuestUser_shouldNotFinish() {
|
||||||
|
when(mUserManager.isGuestUser()).thenReturn(false);
|
||||||
|
doNothing().when(mActivity).showQrCodeScannerFragment();
|
||||||
|
|
||||||
|
mActivity.handleIntent(mIntent);
|
||||||
|
|
||||||
|
verify(mActivity, never()).finish();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user