diff options
-rw-r--r-- | service/java/com/android/server/wifi/WifiServiceImpl.java | 8 | ||||
-rw-r--r-- | tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java | 24 |
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 |