Remove auto-join check PasspointNetworkNominateHelper
Move auto-join check to saved and suggestion nominator
Bug: 155434194
Test: atest com.android.server.wifi
Change-Id: I41e4d3d46a7a59e4f2201e1044f6bb514494f721
diff --git a/service/java/com/android/server/wifi/SavedNetworkNominator.java b/service/java/com/android/server/wifi/SavedNetworkNominator.java
index a303909..3070f09 100644
--- a/service/java/com/android/server/wifi/SavedNetworkNominator.java
+++ b/service/java/com/android/server/wifi/SavedNetworkNominator.java
@@ -166,6 +166,9 @@
mPasspointNetworkNominateHelper.getPasspointNetworkCandidates(scanDetails, false);
for (Pair<ScanDetail, WifiConfiguration> candidate : candidates) {
WifiConfiguration config = candidate.second;
+ if (!config.allowAutojoin) {
+ continue;
+ }
if (isNetworkSimBasedCredential(config) && !isSimBasedNetworkAbleToAutoJoin(config)) {
continue;
}
diff --git a/service/java/com/android/server/wifi/hotspot2/PasspointNetworkNominateHelper.java b/service/java/com/android/server/wifi/hotspot2/PasspointNetworkNominateHelper.java
index 0a5da1f..e1491aa 100644
--- a/service/java/com/android/server/wifi/hotspot2/PasspointNetworkNominateHelper.java
+++ b/service/java/com/android/server/wifi/hotspot2/PasspointNetworkNominateHelper.java
@@ -146,9 +146,6 @@
if (matchedProvider.first.isFromSuggestion() != isFromSuggestion) {
continue;
}
- if (!matchedProvider.first.isAutojoinEnabled()) {
- continue;
- }
List<PasspointNetworkCandidate> candidates = candidatesPerProvider
.computeIfAbsent(matchedProvider.first, k -> new ArrayList<>());
candidates.add(new PasspointNetworkCandidate(matchedProvider.first,
diff --git a/tests/wifitests/src/com/android/server/wifi/SavedNetworkNominatorTest.java b/tests/wifitests/src/com/android/server/wifi/SavedNetworkNominatorTest.java
index 839b2e5..1fbb0f5 100644
--- a/tests/wifitests/src/com/android/server/wifi/SavedNetworkNominatorTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/SavedNetworkNominatorTest.java
@@ -38,7 +38,7 @@
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
-import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
/**
@@ -225,21 +225,26 @@
}
/**
- * Ensure that we do nominate the only matching saved passponit network .
+ * Ensure that we do nominate the only matching saved passponit network with auto-join enabled .
*/
@Test
- public void returnCandidatesIfPasspointNetworksAvailable() {
- ScanDetail scanDetail = mock(ScanDetail.class);
- List<ScanDetail> scanDetails = new ArrayList<>();
- scanDetails.add(scanDetail);
- WifiConfiguration configuration = mock(WifiConfiguration.class);
- List<Pair<ScanDetail, WifiConfiguration>> passpointCandidates = new ArrayList<>();
- passpointCandidates.add(Pair.create(scanDetail, configuration));
+ public void returnCandidatesIfPasspointNetworksAvailableWithAutojoinEnabled() {
+ ScanDetail scanDetail1 = mock(ScanDetail.class);
+ ScanDetail scanDetail2 = mock(ScanDetail.class);
+ List<ScanDetail> scanDetails = Arrays.asList(scanDetail1, scanDetail2);
+ WifiConfiguration configuration1 = mock(WifiConfiguration.class);
+ configuration1.allowAutojoin = true;
+ WifiConfiguration configuration2 = mock(WifiConfiguration.class);
+ configuration2.allowAutojoin = false;
+ List<Pair<ScanDetail, WifiConfiguration>> passpointCandidates =
+ Arrays.asList(Pair.create(scanDetail1, configuration1), Pair.create(scanDetail2,
+ configuration2));
when(mPasspointNetworkNominateHelper.getPasspointNetworkCandidates(scanDetails, false))
.thenReturn(passpointCandidates);
mSavedNetworkNominator.nominateNetworks(scanDetails, null, null,
false, false, mOnConnectableListener);
- verify(mOnConnectableListener).onConnectable(scanDetail, configuration);
+ verify(mOnConnectableListener).onConnectable(scanDetail1, configuration1);
+ verify(mOnConnectableListener, never()).onConnectable(scanDetail2, configuration2);
}
/**
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 32fcb70..a361a19 100644
--- a/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointNetworkNominateHelperTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointNetworkNominateHelperTest.java
@@ -320,74 +320,6 @@
}
/**
- * Verify that when a network matches a roaming provider is found for different scanDetails,
- * will nominate only the candidate with auto-join enabled.
- */
- @Test
- public void evaluateScansWithHomeProviderNetworkAndRoamingProviderNetworkAutoJoinSomeoff() {
- List<ScanDetail> scanDetails = Arrays.asList(generateScanDetail(TEST_SSID1, TEST_BSSID1),
- generateScanDetail(TEST_SSID2, TEST_BSSID2));
-
- // Setup matching providers for ScanDetail with TEST_SSID1.
- when(sTestProvider1.isAutojoinEnabled()).thenReturn(false); // disable auto-join on provider
- List<Pair<PasspointProvider, PasspointMatch>> homeProvider = new ArrayList<>();
- homeProvider.add(Pair.create(sTestProvider1, PasspointMatch.HomeProvider));
- List<Pair<PasspointProvider, PasspointMatch>> roamingProvider = new ArrayList<>();
- roamingProvider.add(Pair.create(sTestProvider2, PasspointMatch.RoamingProvider));
-
- // Return homeProvider for the first ScanDetail (TEST_SSID1) and
- // roamingProvider for the second (TEST_SSID2);
- when(mPasspointManager.matchProvider(any(ScanResult.class)))
- .thenReturn(homeProvider).thenReturn(roamingProvider);
- when(mWifiConfigManager.addOrUpdateNetwork(any(WifiConfiguration.class), anyInt(),
- any())).thenReturn(new NetworkUpdateResult(TEST_NETWORK_ID + 1));
- when(mWifiConfigManager.getConfiguredNetwork(TEST_NETWORK_ID)).thenReturn(TEST_CONFIG1);
- when(mWifiConfigManager.getConfiguredNetwork(TEST_NETWORK_ID + 1))
- .thenReturn(TEST_CONFIG2);
- List<Pair<ScanDetail, WifiConfiguration>> candidates = mNominateHelper
- .getPasspointNetworkCandidates(scanDetails, false);
- assertEquals(1, candidates.size());
- assertEquals(TEST_FQDN2, candidates.get(0).second.FQDN);
-
- verify(mWifiConfigManager).addOrUpdateNetwork(any(), anyInt(), any());
- }
-
- /**
- * Verify that when a network matches a roaming provider is found for different scanDetails,
- * and if all have auto-join disabled - will nominate no candidates.
- */
- @Test
- public void evaluateScansWithHomeProviderNetworkAndRoamingProviderNetworkAutoJoinAllOff() {
- List<ScanDetail> scanDetails = Arrays.asList(generateScanDetail(TEST_SSID1, TEST_BSSID1),
- generateScanDetail(TEST_SSID2, TEST_BSSID2));
-
- // Setup matching providers for ScanDetail with TEST_SSID1.
- when(sTestProvider1.isAutojoinEnabled()).thenReturn(false); // disable auto-join on provider
- when(sTestProvider2.isAutojoinEnabled()).thenReturn(false); // disable auto-join on provider
- List<Pair<PasspointProvider, PasspointMatch>> homeProvider = new ArrayList<>();
- homeProvider.add(Pair.create(sTestProvider1, PasspointMatch.HomeProvider));
- List<Pair<PasspointProvider, PasspointMatch>> roamingProvider = new ArrayList<>();
- roamingProvider.add(Pair.create(sTestProvider2, PasspointMatch.RoamingProvider));
-
- // Return homeProvider for the first ScanDetail (TEST_SSID1) and
- // roamingProvider for the second (TEST_SSID2);
- when(mPasspointManager.matchProvider(any(ScanResult.class)))
- .thenReturn(homeProvider).thenReturn(roamingProvider);
- when(mWifiConfigManager.addOrUpdateNetwork(any(WifiConfiguration.class), anyInt(),
- any())).thenReturn(new NetworkUpdateResult(TEST_NETWORK_ID))
- .thenReturn(new NetworkUpdateResult(TEST_NETWORK_ID + 1));
- when(mWifiConfigManager.getConfiguredNetwork(TEST_NETWORK_ID)).thenReturn(TEST_CONFIG1);
- when(mWifiConfigManager.getConfiguredNetwork(TEST_NETWORK_ID + 1))
- .thenReturn(TEST_CONFIG2);
- List<Pair<ScanDetail, WifiConfiguration>> candidates = mNominateHelper
- .getPasspointNetworkCandidates(scanDetails, false);
- assertEquals(0, candidates.size());
-
- verify(mWifiConfigManager, never()).addOrUpdateNetwork(any(), anyInt(), any());
- }
-
-
- /**
* Verify that anonymous identity is empty when matching a SIM credential provider with a
* network that supports encrypted IMSI and anonymous identity. The anonymous identity will be
* populated with {@code anonymous@<realm>} by ClientModeImpl's handling of the