summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
authorEric Schwarzenbach <easchwar@google.com>2018-04-24 16:31:15 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2018-04-24 16:31:15 +0000
commitc1446c32c8784809ac81f35a1794771eeb6d57cc (patch)
tree1422b8d2b52ec11ea31ca28d24841c6d9d7e0abd /service
parent1fd43a9ace3814f13f4a865878c9c11fe5cdd18b (diff)
parentf18cd43a78de639b3680a0e881d90d02ae57decd (diff)
Merge "Fix issue where WakeupLock locks with unsaved networks." into pi-dev
Diffstat (limited to 'service')
-rw-r--r--service/java/com/android/server/wifi/WakeupController.java42
1 files changed, 19 insertions, 23 deletions
diff --git a/service/java/com/android/server/wifi/WakeupController.java b/service/java/com/android/server/wifi/WakeupController.java
index 2af8ec924..47dba8ed3 100644
--- a/service/java/com/android/server/wifi/WakeupController.java
+++ b/service/java/com/android/server/wifi/WakeupController.java
@@ -72,7 +72,7 @@ public class WakeupController {
@Override
public void onResults(WifiScanner.ScanData[] results) {
if (results.length == 1 && results[0].isAllChannelsScanned()) {
- handleScanResults(Arrays.asList(results[0].getResults()));
+ handleScanResults(filterDfsScanResults(Arrays.asList(results[0].getResults())));
}
}
@@ -181,13 +181,17 @@ public class WakeupController {
if (isEnabled()) {
mWakeupOnboarding.maybeShowNotification();
- Set<ScanResultMatchInfo> savedNetworksFromLatestScan = getSavedNetworksFromLatestScan();
+ List<ScanResult> scanResults =
+ filterDfsScanResults(mWifiInjector.getWifiScanner().getSingleScanResults());
+ Set<ScanResultMatchInfo> matchInfos = toMatchInfos(scanResults);
+ matchInfos.retainAll(getGoodSavedNetworks());
+
if (mVerboseLoggingEnabled) {
- Log.d(TAG, "Saved networks in most recent scan:" + savedNetworksFromLatestScan);
+ Log.d(TAG, "Saved networks in most recent scan:" + matchInfos);
}
- mWifiWakeMetrics.recordStartEvent(savedNetworksFromLatestScan.size());
- mWakeupLock.setLock(savedNetworksFromLatestScan);
+ mWifiWakeMetrics.recordStartEvent(matchInfos.size());
+ mWakeupLock.setLock(matchInfos);
// TODO(b/77291248): request low latency scan here
}
}
@@ -218,18 +222,8 @@ public class WakeupController {
mWakeupLock.enableVerboseLogging(mVerboseLoggingEnabled);
}
- /** Returns a filtered list of saved networks from the last full scan. */
- private Set<ScanResultMatchInfo> getSavedNetworksFromLatestScan() {
- Set<ScanResult> filteredScanResults =
- filterScanResults(mWifiInjector.getWifiScanner().getSingleScanResults());
- Set<ScanResultMatchInfo> goodMatchInfos = toMatchInfos(filteredScanResults);
- goodMatchInfos.retainAll(getGoodSavedNetworks());
-
- return goodMatchInfos;
- }
-
- /** Returns a set of ScanResults with all DFS channels removed. */
- private Set<ScanResult> filterScanResults(Collection<ScanResult> scanResults) {
+ /** Returns a list of ScanResults with DFS channels removed. */
+ private List<ScanResult> filterDfsScanResults(Collection<ScanResult> scanResults) {
int[] dfsChannels = mWifiInjector.getWifiNative()
.getChannelsForBand(WifiScanner.WIFI_BAND_5_GHZ_DFS_ONLY);
if (dfsChannels == null) {
@@ -241,10 +235,10 @@ public class WakeupController {
return scanResults.stream()
.filter(scanResult -> !dfsChannelSet.contains(scanResult.frequency))
- .collect(Collectors.toSet());
+ .collect(Collectors.toList());
}
- /** Returns a filtered list of saved networks from WifiConfigManager. */
+ /** Returns a filtered set of saved networks from WifiConfigManager. */
private Set<ScanResultMatchInfo> getGoodSavedNetworks() {
List<WifiConfiguration> savedNetworks = mWifiConfigManager.getSavedNetworks();
@@ -296,15 +290,17 @@ public class WakeupController {
// need to show notification here in case user turns phone on while wifi is off
mWakeupOnboarding.maybeShowNotification();
- Set<ScanResult> filteredScanResults = filterScanResults(scanResults);
+ // filter out unsaved networks
+ Set<ScanResultMatchInfo> goodSavedNetworks = getGoodSavedNetworks();
+ Set<ScanResultMatchInfo> matchInfos = toMatchInfos(scanResults);
+ matchInfos.retainAll(goodSavedNetworks);
- mWakeupLock.update(toMatchInfos(filteredScanResults));
+ mWakeupLock.update(matchInfos);
if (!mWakeupLock.isUnlocked()) {
return;
}
- ScanResult network =
- mWakeupEvaluator.findViableNetwork(filteredScanResults, getGoodSavedNetworks());
+ ScanResult network = mWakeupEvaluator.findViableNetwork(scanResults, goodSavedNetworks);
if (network != null) {
Log.d(TAG, "Enabling wifi for network: " + network.SSID);