summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--service/java/com/android/server/wifi/WifiServiceImpl.java8
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java24
2 files changed, 27 insertions, 5 deletions
diff --git a/service/java/com/android/server/wifi/WifiServiceImpl.java b/service/java/com/android/server/wifi/WifiServiceImpl.java
index 6e339044a..a147c247e 100644
--- a/service/java/com/android/server/wifi/WifiServiceImpl.java
+++ b/service/java/com/android/server/wifi/WifiServiceImpl.java
@@ -735,10 +735,10 @@ public class WifiServiceImpl extends BaseWifiService {
private boolean isTargetSdkLessThanQOrPrivileged(String packageName, int pid, int uid) {
return mWifiPermissionsUtil.isTargetSdkLessThan(packageName, Build.VERSION_CODES.Q, uid)
|| isPrivileged(pid, uid)
- // DO/PO apps should be able to add/modify saved networks.
|| isDeviceOrProfileOwner(uid, packageName)
- // TODO: Remove this system app bypass once Q is released.
- || isSystem(packageName, uid);
+ || isSystem(packageName, uid)
+ // TODO(b/140540984): Remove this bypass.
+ || mWifiPermissionsUtil.checkSystemAlertWindowPermission(uid, packageName);
}
/**
@@ -749,9 +749,7 @@ public class WifiServiceImpl extends BaseWifiService {
private boolean isTargetSdkLessThanROrPrivileged(String packageName, int pid, int uid) {
return mWifiPermissionsUtil.isTargetSdkLessThan(packageName, Build.VERSION_CODES.R, uid)
|| isPrivileged(pid, uid)
- // DO/PO apps should be able to add/modify saved networks.
|| isDeviceOrProfileOwner(uid, packageName)
- // TODO: Remove this system app bypass once R is released.
|| isSystem(packageName, uid);
}
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java b/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java
index a11fc6dcb..45f49615a 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java
@@ -4253,6 +4253,30 @@ public class WifiServiceImplTest extends WifiBaseTest {
}
/**
+ * Verify that add or update networks is allowed for apps holding system alert permission.
+ */
+ @Test
+ public void testAddOrUpdateNetworkIsAllowedForAppsWithSystemAlertPermission() throws Exception {
+ doReturn(AppOpsManager.MODE_ALLOWED).when(mAppOpsManager)
+ .noteOp(AppOpsManager.OPSTR_CHANGE_WIFI_STATE, Process.myUid(), TEST_PACKAGE_NAME);
+ when(mWifiConfigManager.addOrUpdateNetwork(any(), anyInt(), any())).thenReturn(
+ new NetworkUpdateResult(0));
+
+ when(mWifiPermissionsUtil.checkSystemAlertWindowPermission(
+ Process.myUid(), TEST_PACKAGE_NAME)).thenReturn(true);
+
+ WifiConfiguration config = WifiConfigurationTestUtil.createOpenNetwork();
+ mLooper.startAutoDispatch();
+ assertEquals(0, mWifiServiceImpl.addOrUpdateNetwork(config, TEST_PACKAGE_NAME));
+ mLooper.stopAutoDispatchAndIgnoreExceptions();
+
+ verifyCheckChangePermission(TEST_PACKAGE_NAME);
+ verify(mWifiPermissionsUtil).checkSystemAlertWindowPermission(anyInt(), anyString());
+ verify(mWifiConfigManager).addOrUpdateNetwork(any(), anyInt(), any());
+ verify(mWifiMetrics).incrementNumAddOrUpdateNetworkCalls();
+ }
+
+ /**
* Verify that add or update networks is allowed for DeviceOwner app.
*/
@Test