summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpkanwar <pkanwar@google.com>2017-01-15 09:39:35 -0800
committerpkanwar <pkanwar@google.com>2017-01-18 14:23:19 -0800
commit3112931546f051366df4fd15bd3236f11875a915 (patch)
treea8e960e875c4060f4a915d46315faee32a6fcb34
parent936d25cfe7a682337e9a9c39412650c9ae3ff312 (diff)
downloadandroid_frameworks_opt_net_wifi-3112931546f051366df4fd15bd3236f11875a915.tar.gz
android_frameworks_opt_net_wifi-3112931546f051366df4fd15bd3236f11875a915.tar.bz2
android_frameworks_opt_net_wifi-3112931546f051366df4fd15bd3236f11875a915.zip
DO NOT MERGE: Fix to enable reconnecting to a Carrier network.
We now generate a new Config for each connection attempt. BUG: 30760683 Change-Id: I88393ecc2964e299e80f6f2802dd85a142e1f473
-rw-r--r--service/java/com/android/server/wifi/WifiQualifiedNetworkSelector.java11
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WifiQualifiedNetworkSelectorTest.java42
2 files changed, 36 insertions, 17 deletions
diff --git a/service/java/com/android/server/wifi/WifiQualifiedNetworkSelector.java b/service/java/com/android/server/wifi/WifiQualifiedNetworkSelector.java
index 3cc471ac3..1e7560346 100644
--- a/service/java/com/android/server/wifi/WifiQualifiedNetworkSelector.java
+++ b/service/java/com/android/server/wifi/WifiQualifiedNetworkSelector.java
@@ -1092,14 +1092,17 @@ public class WifiQualifiedNetworkSelector {
return null;
}
+ WifiConfiguration newUntrustedCandidateConfig =
+ new WifiConfiguration(untrustedCandidateConfig);
+
// Mark this config as ephemeral so it isn't persisted.
- untrustedCandidateConfig.ephemeral = true;
+ newUntrustedCandidateConfig.ephemeral = true;
// Mark this config as a Carrier Network.
- untrustedCandidateConfig.isCarrierNetwork = true;
+ newUntrustedCandidateConfig.isCarrierNetwork = true;
mWifiConfigManager.saveNetworkAndSetCandidate(
- untrustedCandidateConfig, untrustedCarrierScanResult);
- return untrustedCandidateConfig;
+ newUntrustedCandidateConfig, untrustedCarrierScanResult);
+ return newUntrustedCandidateConfig;
}
/**
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiQualifiedNetworkSelectorTest.java b/tests/wifitests/src/com/android/server/wifi/WifiQualifiedNetworkSelectorTest.java
index 9f29a55cc..c97618d6a 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiQualifiedNetworkSelectorTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiQualifiedNetworkSelectorTest.java
@@ -2421,6 +2421,23 @@ public class WifiQualifiedNetworkSelectorTest {
assertEquals("Expect no network selection", null, candidate);
}
+ boolean compareCarrierConfigs(WifiConfiguration candidate, WifiConfiguration carrierConfig) {
+ if (!candidate.SSID.equals(carrierConfig.SSID)) {
+ return false;
+ }
+ if (!candidate.ephemeral || carrierConfig.ephemeral) {
+ return false;
+ }
+ if (!candidate.isCarrierNetwork || carrierConfig.isCarrierNetwork) {
+ return false;
+ }
+ if (candidate.enterpriseConfig.getEapMethod() !=
+ carrierConfig.enterpriseConfig.getEapMethod()) {
+ return false;
+ }
+ return true;
+ }
+
/**
* Case #49 Between two 2G Carrier networks, choose the one with stronger RSSI value
* if other conditions are the same and the RSSI values are not staturated.
@@ -2441,15 +2458,13 @@ public class WifiQualifiedNetworkSelectorTest {
any(Boolean.class))).thenReturn(null);
when(mWifiConfigManager.saveNetworkAndSetCandidate(any(WifiConfiguration.class),
any(ScanResult.class))).then(AdditionalAnswers.returnsFirstArg());
- when(mWifiConfigManager.getScanResultCandidate(
- mCarrierConfiguredNetworks.get(1))).thenReturn(chosenScanResult);
+ when(mWifiConfigManager.getScanResultCandidate(any(WifiConfiguration.class)))
+ .thenReturn(chosenScanResult);
when(mWifiConfigManager.getIsCarrierNetworkEnabledByUser()).thenReturn(true);
WifiConfiguration candidate = mWifiQualifiedNetworkSelector.selectQualifiedNetwork(false,
false, scanDetails, false, false, true, false);
- assertTrue(candidate.isCarrierNetwork);
- assertTrue(candidate.ephemeral);
- assertTrue(candidate.SSID.contains(chosenScanResult.SSID));
+ assertTrue(compareCarrierConfigs(candidate, mCarrierConfiguredNetworks.get(1)));
}
@@ -2471,13 +2486,13 @@ public class WifiQualifiedNetworkSelectorTest {
any(Boolean.class))).thenReturn(null);
when(mWifiConfigManager.saveNetworkAndSetCandidate(any(WifiConfiguration.class),
any(ScanResult.class))).then(AdditionalAnswers.returnsFirstArg());
- when(mWifiConfigManager.getScanResultCandidate(
- mCarrierConfiguredNetworks.get(1))).thenReturn(chosenScanResult);
+ when(mWifiConfigManager.getScanResultCandidate(any(WifiConfiguration.class)))
+ .thenReturn(chosenScanResult);
when(mWifiConfigManager.getIsCarrierNetworkEnabledByUser()).thenReturn(true);
WifiConfiguration candidate = mWifiQualifiedNetworkSelector.selectQualifiedNetwork(false,
false, scanDetails, false, false, true, false);
- assertTrue(candidate.SSID.contains(chosenScanResult.SSID));
+ assertTrue(compareCarrierConfigs(candidate, mCarrierConfiguredNetworks.get(1)));
}
/**
@@ -2502,15 +2517,16 @@ public class WifiQualifiedNetworkSelectorTest {
any(Boolean.class))).thenReturn(null);
when(mWifiConfigManager.saveNetworkAndSetCandidate(any(WifiConfiguration.class),
any(ScanResult.class))).then(AdditionalAnswers.returnsFirstArg());
- when(mWifiConfigManager.getScanResultCandidate(
- mCarrierConfiguredNetworks.get(0))).thenReturn(chosenScanResult);
+ when(mWifiConfigManager.getScanResultCandidate(any(WifiConfiguration.class)))
+ .thenReturn(chosenScanResult);
when(mWifiInfo.getNetworkId()).thenReturn(0);
when(mWifiInfo.getBSSID()).thenReturn(bssids[0]);
when(mWifiConfigManager.getIsCarrierNetworkEnabledByUser()).thenReturn(true);
WifiConfiguration candidate = mWifiQualifiedNetworkSelector.selectQualifiedNetwork(false,
false, scanDetails, false, true, false, false);
- assertTrue(candidate.SSID.contains(chosenScanResult.SSID));
+
+ assertTrue(compareCarrierConfigs(candidate, mCarrierConfiguredNetworks.get(0)));
}
/**
@@ -2658,8 +2674,8 @@ public class WifiQualifiedNetworkSelectorTest {
any(Boolean.class))).thenReturn(null);
when(mWifiConfigManager.saveNetworkAndSetCandidate(any(WifiConfiguration.class),
any(ScanResult.class))).then(AdditionalAnswers.returnsFirstArg());
- when(mWifiConfigManager.getScanResultCandidate(
- mCarrierConfiguredNetworks.get(1))).thenReturn(chosenScanResult);
+ when(mWifiConfigManager.getScanResultCandidate(any(WifiConfiguration.class)))
+ .thenReturn(chosenScanResult);
when(mWifiConfigManager.getIsCarrierNetworkEnabledByUser()).thenReturn(false);
WifiConfiguration candidate = mWifiQualifiedNetworkSelector.selectQualifiedNetwork(false,