summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--service/java/com/android/server/wifi/WifiConfigManager.java4
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java36
2 files changed, 36 insertions, 4 deletions
diff --git a/service/java/com/android/server/wifi/WifiConfigManager.java b/service/java/com/android/server/wifi/WifiConfigManager.java
index 6b88f7165..1529c6560 100644
--- a/service/java/com/android/server/wifi/WifiConfigManager.java
+++ b/service/java/com/android/server/wifi/WifiConfigManager.java
@@ -3252,9 +3252,11 @@ public class WifiConfigManager {
mWifiPermissionsUtil.checkNetworkSettingsPermission(uid);
final boolean hasNetworkSetupWizardPermission =
mWifiPermissionsUtil.checkNetworkSetupWizardPermission(uid);
+ final boolean hasNetworkManagedProvisioningPermission =
+ mWifiPermissionsUtil.checkNetworkManagedProvisioningPermission(uid);
// If |uid| corresponds to the device owner, allow all modifications.
if (isProfileOwner || isDeviceOwner || hasNetworkSettingsPermission
- || hasNetworkSetupWizardPermission) {
+ || hasNetworkSetupWizardPermission || hasNetworkManagedProvisioningPermission) {
return true;
}
if (mVerboseLoggingEnabled) {
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java b/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java
index dcd0fa8c5..0559c6385 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java
@@ -4006,6 +4006,33 @@ public class WifiConfigManagerTest extends WifiBaseTest {
true, // assertSuccess
WifiConfiguration.INVALID_NETWORK_ID); // Update networkID
}
+
+ /**
+ * Verifies that adding a network with a PAC or STATIC proxy, while having the
+ * {@link android.Manifest.permission#NETWORK_MANAGED_PROVISIONING} permission is successful
+ */
+ @Test
+ public void testAddNetworkWithProxyWithNetworkManagedPermission() {
+ verifyAddOrUpdateNetworkWithProxySettingsAndPermissions(
+ false, // withNetworkSettings
+ false, // withNetworkSetupWizard
+ true, // withNetworkManagedProvisioning
+ false, // withProfileOwnerPolicy
+ false, // withDeviceOwnerPolicy
+ WifiConfigurationTestUtil.createDHCPIpConfigurationWithPacProxy(),
+ true, // assertSuccess
+ WifiConfiguration.INVALID_NETWORK_ID); // Update networkID
+ verifyAddOrUpdateNetworkWithProxySettingsAndPermissions(
+ false, // withNetworkSettings
+ false, // withNetworkSetupWizard
+ true, // withNetworkManagedProvisioning
+ false, // withProfileOwnerPolicy
+ false, // withDeviceOwnerPolicy
+ WifiConfigurationTestUtil.createDHCPIpConfigurationWithStaticProxy(),
+ true, // assertSuccess
+ WifiConfiguration.INVALID_NETWORK_ID); // Update networkID
+ }
+
/**
* Verifies that updating a network (that has no proxy) and adding a PAC or STATIC proxy fails
* without being able to override configs, or holding Device or Profile owner policies.
@@ -4055,7 +4082,7 @@ public class WifiConfigManagerTest extends WifiBaseTest {
verifyAddOrUpdateNetworkWithProxySettingsAndPermissions(
false, // withNetworkSettings
true, // withNetworkSetupWizard
- false, // withProfileOwnerPolicy
+ false, false, // withProfileOwnerPolicy
false, // withDeviceOwnerPolicy
WifiConfigurationTestUtil.createDHCPIpConfigurationWithPacProxy(),
true, // assertSuccess
@@ -4636,13 +4663,14 @@ public class WifiConfigManagerTest extends WifiBaseTest {
boolean assertSuccess,
int networkId) {
return verifyAddOrUpdateNetworkWithProxySettingsAndPermissions(withNetworkSettings,
- false, withProfileOwnerPolicy, withDeviceOwnerPolicy, ipConfiguration,
+ false, false, withProfileOwnerPolicy, withDeviceOwnerPolicy, ipConfiguration,
assertSuccess, networkId);
}
private NetworkUpdateResult verifyAddOrUpdateNetworkWithProxySettingsAndPermissions(
boolean withNetworkSettings,
boolean withNetworkSetupWizard,
+ boolean withNetworkManagedProvisioning,
boolean withProfileOwnerPolicy,
boolean withDeviceOwnerPolicy,
IpConfiguration ipConfiguration,
@@ -4663,7 +4691,9 @@ public class WifiConfigManagerTest extends WifiBaseTest {
.thenReturn(withNetworkSettings);
when(mWifiPermissionsUtil.checkNetworkSetupWizardPermission(anyInt()))
.thenReturn(withNetworkSetupWizard);
- int uid = withNetworkSettings || withNetworkSetupWizard
+ when(mWifiPermissionsUtil.checkNetworkManagedProvisioningPermission(anyInt()))
+ .thenReturn(withNetworkManagedProvisioning);
+ int uid = withNetworkSettings || withNetworkSetupWizard || withNetworkManagedProvisioning
? TEST_CREATOR_UID
: TEST_NO_PERM_UID;
NetworkUpdateResult result = addNetworkToWifiConfigManager(network, uid);