summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRandy Pan <zpan@google.com>2017-05-31 11:17:53 -0700
committerRandy Pan <zpan@google.com>2017-05-31 15:17:29 -0700
commit32a2c670100b84fb049f55ad5a8a300c60a48aa5 (patch)
treeab7b7c24cd262960f5c20d1cb9431d9641ea81a8
parentab73d041b30848ba20e69244418fbfa9b4975383 (diff)
SavedNetworkEvaluator: ignore ephemeral networks
Ephemeral networks should be evaluted by ScoredNetworkEvaluator. Otherwise, an ephemeral network might be chosen over a saved network. Plus, the SaveNetworkEvaluator's scoring algorithm is different from the ScoredNetworkEvalutor, so the result coming out from these two evalutors can be very different. Bug: 62197617 Test: frameworks/opt/net/wifi/tests/wifitests/runtests.sh Change-Id: I3237b4ca50dd6964dd8678011e6a9940c0ca1d0b
-rw-r--r--service/java/com/android/server/wifi/SavedNetworkEvaluator.java9
-rw-r--r--tests/wifitests/src/com/android/server/wifi/SavedNetworkEvaluatorTest.java27
2 files changed, 32 insertions, 4 deletions
diff --git a/service/java/com/android/server/wifi/SavedNetworkEvaluator.java b/service/java/com/android/server/wifi/SavedNetworkEvaluator.java
index bf79edaf8..720afd5a7 100644
--- a/service/java/com/android/server/wifi/SavedNetworkEvaluator.java
+++ b/service/java/com/android/server/wifi/SavedNetworkEvaluator.java
@@ -264,11 +264,12 @@ public class SavedNetworkEvaluator implements WifiNetworkSelector.NetworkEvaluat
for (WifiConfiguration network : associatedConfigurations) {
/**
- * Ignore Passpoint networks. Passpoint networks are also considered as "saved"
- * network, but without being persisted to the storage. They are being evaluated
- * by {@link PasspointNetworkEvaluator}.
+ * Ignore Passpoint and Ephemeral networks. They are configured networks,
+ * but without being persisted to the storage. They are evaluated by
+ * {@link PasspointNetworkEvaluator} and {@link ScoredNetworkEvaluator}
+ * respectively.
*/
- if (network.isPasspoint()) {
+ if (network.isPasspoint() || network.isEphemeral()) {
continue;
}
diff --git a/tests/wifitests/src/com/android/server/wifi/SavedNetworkEvaluatorTest.java b/tests/wifitests/src/com/android/server/wifi/SavedNetworkEvaluatorTest.java
index 78a3a3d0f..7f6360408 100644
--- a/tests/wifitests/src/com/android/server/wifi/SavedNetworkEvaluatorTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/SavedNetworkEvaluatorTest.java
@@ -172,6 +172,33 @@ public class SavedNetworkEvaluatorTest {
}
/**
+ * Do not evaluate networks that {@link WifiConfiguration#isEphemeral}.
+ */
+ @Test
+ public void ignoreEphemeralNetworks() {
+ String[] ssids = {"\"test1\"", "\"test2\""};
+ String[] bssids = {"6c:f3:7f:ae:8c:f3", "6c:f3:7f:ae:8c:f4"};
+ int[] freqs = {2470, 2437};
+ String[] caps = {"[ESS]", "[ESS]"};
+ int[] levels = {mThresholdQualifiedRssi2G + 8, mThresholdQualifiedRssi2G + 10};
+ int[] securities = {SECURITY_NONE, SECURITY_NONE};
+
+ ScanDetailsAndWifiConfigs scanDetailsAndConfigs =
+ WifiNetworkSelectorTestUtil.setupScanDetailsAndConfigStore(ssids, bssids,
+ freqs, caps, levels, securities, mWifiConfigManager, mClock);
+ List<ScanDetail> scanDetails = scanDetailsAndConfigs.getScanDetails();
+ WifiConfiguration[] savedConfigs = scanDetailsAndConfigs.getWifiConfigs();
+ for (WifiConfiguration wifiConfiguration : savedConfigs) {
+ wifiConfiguration.ephemeral = true;
+ }
+
+ WifiConfiguration candidate = mSavedNetworkEvaluator.evaluateNetworks(scanDetails,
+ null, null, true, false, null);
+
+ assertNull(candidate);
+ }
+
+ /**
* Set the candidate {@link ScanResult} for all {@link WifiConfiguration}s regardless of
* whether they are secure saved, open saved, or {@link WifiConfiguration#useExternalScores}.
*/