diff options
author | Roshan Pius <rpius@google.com> | 2020-04-23 06:23:44 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2020-04-23 06:23:44 +0000 |
commit | 84e63fbf23041e4485e55fd7d1d7a17641e7bfc9 (patch) | |
tree | dc54b36cce3fca678319c57b0eed9cf609f3bf62 | |
parent | 9ee96f487141905ba5269deb9ca227993c1ed43f (diff) | |
parent | 6d3b675cbbb3f8311c0cbcbb796a70a369f211dc (diff) |
Merge changes I8373e0f2,I873f179c into rvc-dev am: a809881005 am: 6d3b675cbb
Change-Id: If9d96d90a764effc38c54c323ad063b95d8f8c43
3 files changed, 31 insertions, 8 deletions
diff --git a/service/java/com/android/server/wifi/SavedNetworkNominator.java b/service/java/com/android/server/wifi/SavedNetworkNominator.java index 2d91881a0..a3039096e 100644 --- a/service/java/com/android/server/wifi/SavedNetworkNominator.java +++ b/service/java/com/android/server/wifi/SavedNetworkNominator.java @@ -97,7 +97,6 @@ public class SavedNetworkNominator implements WifiNetworkSelector.NetworkNominat // One ScanResult can be associated with more than one network, hence we calculate all // the scores and use the highest one as the ScanResult's score. - // TODO(b/112196799): this has side effects, rather not do that in a nominator WifiConfiguration network = mWifiConfigManager.getConfiguredNetworkForScanDetailAndCache(scanDetail); @@ -117,20 +116,21 @@ public class SavedNetworkNominator implements WifiNetworkSelector.NetworkNominat // Ignore networks that the user has disallowed auto-join for. if (!network.allowAutojoin) { + localLog("Ignoring auto join disabled SSID: " + network.SSID); continue; } WifiConfiguration.NetworkSelectionStatus status = network.getNetworkSelectionStatus(); - // TODO (b/112196799): another side effect status.setSeenInLastQualifiedNetworkSelection(true); if (mWifiConfigManager.isNetworkTemporarilyDisabledByUser(network.SSID)) { - mLocalLog.log("Ignoring user disabled SSID: " + network.SSID); + localLog("Ignoring user disabled SSID: " + network.SSID); continue; } if (!status.isNetworkEnabled()) { + localLog("Ignoring network selection disabled SSID: " + network.SSID); continue; } if (network.BSSID != null && !network.BSSID.equals("any") @@ -143,6 +143,7 @@ public class SavedNetworkNominator implements WifiNetworkSelector.NetworkNominat continue; } if (isNetworkSimBasedCredential(network) && !isSimBasedNetworkAbleToAutoJoin(network)) { + localLog("Ignoring SIM auto join disabled SSID: " + network.SSID); continue; } diff --git a/service/java/com/android/server/wifi/WifiServiceImpl.java b/service/java/com/android/server/wifi/WifiServiceImpl.java index e6e5f2b36..37f34639e 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 814cfc756..619bf0975 100644 --- a/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java +++ b/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java @@ -4255,6 +4255,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 |