summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoshan Pius <rpius@google.com>2020-04-23 06:23:44 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2020-04-23 06:23:44 +0000
commit84e63fbf23041e4485e55fd7d1d7a17641e7bfc9 (patch)
treedc54b36cce3fca678319c57b0eed9cf609f3bf62
parent9ee96f487141905ba5269deb9ca227993c1ed43f (diff)
parent6d3b675cbbb3f8311c0cbcbb796a70a369f211dc (diff)
Merge changes I8373e0f2,I873f179c into rvc-dev am: a809881005 am: 6d3b675cbb
Change-Id: If9d96d90a764effc38c54c323ad063b95d8f8c43
-rw-r--r--service/java/com/android/server/wifi/SavedNetworkNominator.java7
-rw-r--r--service/java/com/android/server/wifi/WifiServiceImpl.java8
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java24
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