diff options
author | pkanwar <pkanwar@google.com> | 2016-12-26 09:57:50 -0800 |
---|---|---|
committer | pkanwar <pkanwar@google.com> | 2017-01-10 12:41:16 -0800 |
commit | ab9a573e3138911e08d037a6996297be30be20bc (patch) | |
tree | b74b07ce939d5f552bd696de6ff03128ef11e6c9 | |
parent | d84ac6ab3451b32aaedc2b497a57c700088d6f6d (diff) | |
download | android_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
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); + } } |