Check WiFi restrictions for WiFi QR code intent am: fe5690598c
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/16544954
Change-Id: Id2ef05626ba9adce5365ab0f928b7bfc3d556246
diff --git a/src/com/android/settings/wifi/dpp/WifiDppEnrolleeActivity.java b/src/com/android/settings/wifi/dpp/WifiDppEnrolleeActivity.java
index c5f1e81..3ce244c 100644
--- a/src/com/android/settings/wifi/dpp/WifiDppEnrolleeActivity.java
+++ b/src/com/android/settings/wifi/dpp/WifiDppEnrolleeActivity.java
@@ -18,11 +18,14 @@
import android.app.settings.SettingsEnums;
import android.content.Intent;
+import android.util.EventLog;
import android.util.Log;
+import androidx.annotation.VisibleForTesting;
import androidx.fragment.app.FragmentTransaction;
import com.android.settings.R;
+import com.android.settingslib.wifi.WifiRestrictionsCache;
/**
* To provision "this" device with specified Wi-Fi network.
@@ -37,6 +40,9 @@
static final String ACTION_ENROLLEE_QR_CODE_SCANNER =
"android.settings.WIFI_DPP_ENROLLEE_QR_CODE_SCANNER";
+ @VisibleForTesting
+ protected WifiRestrictionsCache mWifiRestrictionsCache;
+
@Override
public int getMetricsCategory() {
return SettingsEnums.SETTINGS_WIFI_DPP_ENROLLEE;
@@ -50,6 +56,14 @@
return;
}
+ if (!isWifiConfigAllowed()) {
+ Log.e(TAG, "The user is not allowed to configure Wi-Fi.");
+ finish();
+ EventLog.writeEvent(0x534e4554, "202017876", getApplicationContext().getUserId(),
+ "The user is not allowed to configure Wi-Fi.");
+ return;
+ }
+
switch (action) {
case ACTION_ENROLLEE_QR_CODE_SCANNER:
String ssid = intent.getStringExtra(WifiDppUtils.EXTRA_WIFI_SSID);
@@ -61,7 +75,15 @@
}
}
- private void showQrCodeScannerFragment(String ssid) {
+ private boolean isWifiConfigAllowed() {
+ if (mWifiRestrictionsCache == null) {
+ mWifiRestrictionsCache = WifiRestrictionsCache.getInstance(getApplicationContext());
+ }
+ return mWifiRestrictionsCache.isConfigWifiAllowed();
+ }
+
+ @VisibleForTesting
+ protected void showQrCodeScannerFragment(String ssid) {
WifiDppQrCodeScannerFragment fragment =
(WifiDppQrCodeScannerFragment) mFragmentManager.findFragmentByTag(
WifiDppUtils.TAG_FRAGMENT_QR_CODE_SCANNER);
diff --git a/tests/robotests/src/com/android/settings/wifi/dpp/WifiDppEnrolleeActivityTest.java b/tests/robotests/src/com/android/settings/wifi/dpp/WifiDppEnrolleeActivityTest.java
index 819b7f4..67d4678 100644
--- a/tests/robotests/src/com/android/settings/wifi/dpp/WifiDppEnrolleeActivityTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/dpp/WifiDppEnrolleeActivityTest.java
@@ -16,16 +16,82 @@
package com.android.settings.wifi.dpp;
+import static com.android.settings.wifi.dpp.WifiDppEnrolleeActivity.ACTION_ENROLLEE_QR_CODE_SCANNER;
+
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.content.Intent;
+
+import com.android.settingslib.wifi.WifiRestrictionsCache;
+
+import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
@RunWith(RobolectricTestRunner.class)
public class WifiDppEnrolleeActivityTest {
+
+ private static final String WIFI_SSID = "wifi-ssid";
+
+ @Rule
+ public final MockitoRule mMockitoRule = MockitoJUnit.rule();
+ @Mock
+ WifiRestrictionsCache mWifiRestrictionsCache;
+ @Mock
+ Intent mIntent;
+
+ WifiDppEnrolleeActivity mActivity;
+
+ @Before
+ public void setUp() {
+ when(mWifiRestrictionsCache.isConfigWifiAllowed()).thenReturn(true);
+ when(mIntent.getAction()).thenReturn(ACTION_ENROLLEE_QR_CODE_SCANNER);
+ when(mIntent.getStringExtra(WifiDppUtils.EXTRA_WIFI_SSID)).thenReturn(WIFI_SSID);
+
+ mActivity = spy(Robolectric.setupActivity(WifiDppEnrolleeActivity.class));
+ mActivity.mWifiRestrictionsCache = mWifiRestrictionsCache;
+ }
+
@Test
public void launchActivity_noIntentAction_shouldNotFatalException() {
WifiDppEnrolleeActivity wifiDppEnrolleeActivity =
Robolectric.setupActivity(WifiDppEnrolleeActivity.class);
}
+
+ @Test
+ public void handleIntent_noIntentAction_shouldFinish() {
+ when(mIntent.getAction()).thenReturn(null);
+
+ mActivity.handleIntent(mIntent);
+
+ verify(mActivity).finish();
+ }
+
+ @Test
+ public void handleIntent_notAllowedConfigWifi_shouldFinish() {
+ when(mWifiRestrictionsCache.isConfigWifiAllowed()).thenReturn(false);
+
+ mActivity.handleIntent(mIntent);
+
+ verify(mActivity).finish();
+ }
+
+ @Test
+ public void handleIntent_hasIntentDataAndAllowedConfigWifi_shouldShowFragment() {
+ when(mWifiRestrictionsCache.isConfigWifiAllowed()).thenReturn(true);
+ doNothing().when(mActivity).showQrCodeScannerFragment(WIFI_SSID);
+
+ mActivity.handleIntent(mIntent);
+
+ verify(mActivity).showQrCodeScannerFragment(WIFI_SSID);
+ }
}