diff options
author | Nate(Qiang) Jiang <qiangjiang@google.com> | 2020-02-24 18:11:15 -0800 |
---|---|---|
committer | Nate(Qiang) Jiang <qiangjiang@google.com> | 2020-02-25 13:16:04 -0800 |
commit | d9265c1cc86b8ce77340efe547f002718f677038 (patch) | |
tree | 75effe443c62e91ff74f70f18475388772072076 | |
parent | 861798ec8b5c8770bb883a101ceed513ef7954c4 (diff) |
Consider ChargeablePublic as metered for network selection
Bug: 149587282
Test: atest com.android.server.wifi
Change-Id: I64bc8203c8ab200d1e11f44818e9240025b5fb60
-rw-r--r-- | service/java/com/android/server/wifi/hotspot2/PasspointNetworkNominateHelper.java | 4 | ||||
-rw-r--r-- | tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointNetworkNominateHelperTest.java | 27 |
2 files changed, 31 insertions, 0 deletions
diff --git a/service/java/com/android/server/wifi/hotspot2/PasspointNetworkNominateHelper.java b/service/java/com/android/server/wifi/hotspot2/PasspointNetworkNominateHelper.java index e319c0014..ca9a52fcb 100644 --- a/service/java/com/android/server/wifi/hotspot2/PasspointNetworkNominateHelper.java +++ b/service/java/com/android/server/wifi/hotspot2/PasspointNetworkNominateHelper.java @@ -187,6 +187,10 @@ public class PasspointNetworkNominateHelper { WifiConfiguration config = candidate.mProvider.getWifiConfig(); config.SSID = ScanResultUtil.createQuotedSSID(candidate.mScanDetail.getSSID()); config.isHomeProviderNetwork = candidate.mMatchStatus == PasspointMatch.HomeProvider; + if (candidate.mScanDetail.getNetworkDetail().getAnt() + == NetworkDetail.Ant.ChargeablePublic) { + config.meteredHint = true; + } WifiConfiguration existingNetwork = mWifiConfigManager.getConfiguredNetwork( config.getKey()); if (existingNetwork != null) { diff --git a/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointNetworkNominateHelperTest.java b/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointNetworkNominateHelperTest.java index fa07b0dcb..0be5035ad 100644 --- a/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointNetworkNominateHelperTest.java +++ b/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointNetworkNominateHelperTest.java @@ -682,4 +682,31 @@ public class PasspointNetworkNominateHelperTest { // Verify that no provider matching is performed. verify(mPasspointManager, never()).matchProvider(any(ScanResult.class)); } + + /** + * Verify matching passpoint provider with ChargeablePublic AP will nominate a metered + * candidate. + */ + @Test + public void evaluateScansWithAntIsChargeablePublic() { + ScanDetail scanDetail = generateScanDetail(TEST_SSID1, TEST_BSSID1); + NetworkDetail networkDetail = scanDetail.getNetworkDetail(); + when(networkDetail.getAnt()).thenReturn(NetworkDetail.Ant.ChargeablePublic); + List<ScanDetail> scanDetails = Arrays.asList(scanDetail); + + List<Pair<PasspointProvider, PasspointMatch>> homeProvider = new ArrayList<>(); + homeProvider.add(Pair.create(sTestProvider1, PasspointMatch.HomeProvider)); + + // Return homeProvider for the first ScanDetail (TEST_SSID1) and a null (no match) for + // for the second (TEST_SSID2); + when(mPasspointManager.matchProvider(any(ScanResult.class))).thenReturn(homeProvider) + .thenReturn(null); + when(mWifiConfigManager.addOrUpdateNetwork(any(WifiConfiguration.class), anyInt())) + .thenReturn(new NetworkUpdateResult(TEST_NETWORK_ID)); + when(mWifiConfigManager.getConfiguredNetwork(TEST_NETWORK_ID)).thenReturn(TEST_CONFIG1); + List<Pair<ScanDetail, WifiConfiguration>> candidates = mNominateHelper + .getPasspointNetworkCandidates(scanDetails, false); + assertEquals(1, candidates.size()); + assertTrue(WifiConfiguration.isMetered(candidates.get(0).second, null)); + } } |