summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpkanwar <pkanwar@google.com>2016-12-26 09:57:50 -0800
committerpkanwar <pkanwar@google.com>2017-01-10 12:41:16 -0800
commitab9a573e3138911e08d037a6996297be30be20bc (patch)
treeb74b07ce939d5f552bd696de6ff03128ef11e6c9
parentd84ac6ab3451b32aaedc2b497a57c700088d6f6d (diff)
downloadandroid_frameworks_opt_net_wifi-ab9a573e3138911e08d037a6996297be30be20bc.tar.gz
android_frameworks_opt_net_wifi-ab9a573e3138911e08d037a6996297be30be20bc.tar.bz2
android_frameworks_opt_net_wifi-ab9a573e3138911e08d037a6996297be30be20bc.zip
DO NOT MERGE ANYWHERE: Connect to Carrier networks if enabled in
Settings. After this change the WifiQualifiedSelector will only connect to Carrier networks if enabled in the Settings. Provided a method in WifiConfigManager that will be used to decide if we try connecing to the Carrier network. BUG: 30760683 Change-Id: I5c6841f784bd82f3811837331d3dd0c795da7688
-rw-r--r--service/java/com/android/server/wifi/WifiConfigManager.java9
-rw-r--r--service/java/com/android/server/wifi/WifiQualifiedNetworkSelector.java6
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WifiQualifiedNetworkSelectorTest.java31
3 files changed, 45 insertions, 1 deletions
diff --git a/service/java/com/android/server/wifi/WifiConfigManager.java b/service/java/com/android/server/wifi/WifiConfigManager.java
index 774d75ec7..32a4113e9 100644
--- a/service/java/com/android/server/wifi/WifiConfigManager.java
+++ b/service/java/com/android/server/wifi/WifiConfigManager.java
@@ -3318,4 +3318,13 @@ public class WifiConfigManager {
public boolean wasEphemeralNetworkDeleted(String ssid) {
return mDeletedEphemeralSSIDs.contains(ssid);
}
+
+ /**
+ * Check if the User has enabled connecting to carrier networks from Settings.
+ * @return true if enabled in Settings, false otherwise.
+ */
+ public boolean getIsCarrierNetworkEnabledByUser() {
+ return android.provider.Settings.Global.getInt(mContext.getContentResolver(),
+ Settings.Global.WIFI_CONNECT_CARRIER_NETWORKS, 0) == 1;
+ }
}
diff --git a/service/java/com/android/server/wifi/WifiQualifiedNetworkSelector.java b/service/java/com/android/server/wifi/WifiQualifiedNetworkSelector.java
index 4f63a5bbd..a135e0b76 100644
--- a/service/java/com/android/server/wifi/WifiQualifiedNetworkSelector.java
+++ b/service/java/com/android/server/wifi/WifiQualifiedNetworkSelector.java
@@ -748,6 +748,9 @@ public class WifiQualifiedNetworkSelector {
ArrayList<NetworkKey> unscoredNetworks = new ArrayList<NetworkKey>();
boolean scanResultsHaveCurrentBssid = false;
+ localLog("isCarrierNetworkEnabledByUser: " +
+ mWifiConfigManager.getIsCarrierNetworkEnabledByUser());
+
//iterate all scan results and find the best candidate with the highest score
for (ScanDetail scanDetail : mScanDetails) {
ScanResult scanResult = scanDetail.getScanResult();
@@ -840,7 +843,8 @@ public class WifiQualifiedNetworkSelector {
// Evaluate the carrier network as a possible candidate.
// todo need to add flag isCarrierConnectionsAllowed, config in settings.
} else if (!mCarrierConfiguredNetworks.isEmpty() &&
- isCarrierNetwork(scanResult)) {
+ isCarrierNetwork(scanResult) &&
+ mWifiConfigManager.getIsCarrierNetworkEnabledByUser()) {
localLog("Checking the carrierScoreEvaluator for candidates...");
carrierScoreEvaluator.evalCarrierCandidate(scanResult,
getCarrierScore(scanResult, mCurrentConnectedNetwork,
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiQualifiedNetworkSelectorTest.java b/tests/wifitests/src/com/android/server/wifi/WifiQualifiedNetworkSelectorTest.java
index 3c2d31fdf..86f72984a 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiQualifiedNetworkSelectorTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiQualifiedNetworkSelectorTest.java
@@ -2443,6 +2443,7 @@ public class WifiQualifiedNetworkSelectorTest {
any(ScanResult.class))).then(AdditionalAnswers.returnsFirstArg());
when(mWifiConfigManager.getScanResultCandidate(
mCarrierConfiguredNetworks.get(1))).thenReturn(chosenScanResult);
+ when(mWifiConfigManager.getIsCarrierNetworkEnabledByUser()).thenReturn(true);
WifiConfiguration candidate = mWifiQualifiedNetworkSelector.selectQualifiedNetwork(false,
false, scanDetails, false, false, true, false);
@@ -2471,6 +2472,7 @@ public class WifiQualifiedNetworkSelectorTest {
any(ScanResult.class))).then(AdditionalAnswers.returnsFirstArg());
when(mWifiConfigManager.getScanResultCandidate(
mCarrierConfiguredNetworks.get(1))).thenReturn(chosenScanResult);
+ when(mWifiConfigManager.getIsCarrierNetworkEnabledByUser()).thenReturn(true);
WifiConfiguration candidate = mWifiQualifiedNetworkSelector.selectQualifiedNetwork(false,
false, scanDetails, false, false, true, false);
@@ -2503,6 +2505,7 @@ public class WifiQualifiedNetworkSelectorTest {
mCarrierConfiguredNetworks.get(0))).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);
@@ -2526,6 +2529,7 @@ public class WifiQualifiedNetworkSelectorTest {
List<WifiConfiguration> nullCarrierConfiguredNetworks = new ArrayList<WifiConfiguration>();
mWifiQualifiedNetworkSelector.setCarrierConfiguredNetworks(nullCarrierConfiguredNetworks);
+ when(mWifiConfigManager.getIsCarrierNetworkEnabledByUser()).thenReturn(true);
WifiConfiguration candidate = mWifiQualifiedNetworkSelector.selectQualifiedNetwork(false,
true, scanDetails, false, false, true, false);
@@ -2634,4 +2638,31 @@ public class WifiQualifiedNetworkSelectorTest {
assertEquals("Expect right network", configList.get(0).SSID, "\"Wifi Extra\"");
assertEquals("Expect right network", configList.get(2).SSID, "\"Google-Guest\"");
}
+
+ /**
+ * Case #57 Test condition where no Carrier networks are defined.
+ */
+ @Test
+ public void testCarrierNotEnabledByUser() {
+
+ String[] ssids = {"TEST1", "TEST2"};
+ String[] bssids = {"6c:f3:7f:ae:8c:f3", "6c:f3:7f:ae:8c:f4"};
+ int[] frequencies = {2437, 5240};
+ String[] caps = {"[WPA2-EAP-CCMP][ESS]", "[WPA2-EAP-CCMP][ESS]"};
+ int[] levels = {-65,-55};
+
+ List<ScanDetail> scanDetails = getScanDetails(ssids, bssids, frequencies, caps, levels);
+ ScanResult chosenScanResult = scanDetails.get(1).getScanResult();
+ when(mWifiConfigManager.updateSavedNetworkWithNewScanDetail(any(ScanDetail.class),
+ 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.getIsCarrierNetworkEnabledByUser()).thenReturn(false);
+
+ WifiConfiguration candidate = mWifiQualifiedNetworkSelector.selectQualifiedNetwork(false,
+ false, scanDetails, false, false, true, false);
+ assertEquals("Expect no network selection", null, candidate);
+ }
}