summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNate(Qiang) Jiang <qiangjiang@google.com>2020-02-24 18:11:15 -0800
committerNate(Qiang) Jiang <qiangjiang@google.com>2020-02-25 13:16:04 -0800
commitd9265c1cc86b8ce77340efe547f002718f677038 (patch)
tree75effe443c62e91ff74f70f18475388772072076
parent861798ec8b5c8770bb883a101ceed513ef7954c4 (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.java4
-rw-r--r--tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointNetworkNominateHelperTest.java27
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));
+ }
}