Enable/disable auto-join for Suggestions
allow user override auto-join for network suggestion, when disabled,
will not be considered for network selection.
Bug: 139199957
Test: atest com.android.server.wifi
Change-Id: If021be2fea2a7ee2bd7694b41dc495fb0bcad7f6
diff --git a/service/java/com/android/server/wifi/NetworkSuggestionNominator.java b/service/java/com/android/server/wifi/NetworkSuggestionNominator.java
index 4032598..d2808de 100644
--- a/service/java/com/android/server/wifi/NetworkSuggestionNominator.java
+++ b/service/java/com/android/server/wifi/NetworkSuggestionNominator.java
@@ -30,6 +30,7 @@
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -74,6 +75,8 @@
boolean untrustedNetworkAllowed,
@NonNull OnConnectableListener onConnectableListener) {
MatchMetaInfo matchMetaInfo = new MatchMetaInfo();
+ Set<ExtendedWifiNetworkSuggestion> autoJoinDisabledSuggestions = new HashSet<>();
+
List<ScanDetail> filteredScanDetails = scanDetails.stream().filter(scanDetail ->
!mWifiConfigManager.wasEphemeralNetworkDeleted(
ScanResultUtil.createQuotedSSID(scanDetail.getScanResult().SSID)))
@@ -82,13 +85,16 @@
return;
}
findMatchedPasspointSuggestionNetworks(filteredScanDetails, matchMetaInfo);
- findMatchedSuggestionNetworks(filteredScanDetails, matchMetaInfo);
- // Return early on no match.
+ findMatchedSuggestionNetworks(filteredScanDetails, matchMetaInfo,
+ autoJoinDisabledSuggestions);
+
if (matchMetaInfo.isEmpty()) {
- mLocalLog.log("did not see any matching network suggestions.");
- return;
+ mLocalLog.log("did not see any matching auto-join enabled network suggestions.");
+ } else {
+ matchMetaInfo.findConnectableNetworksAndHighestPriority(onConnectableListener);
}
- matchMetaInfo.findConnectableNetworksAndHighestPriority(onConnectableListener);
+
+ addAutojoinDisabledSuggestionToWifiConfigManager(autoJoinDisabledSuggestions);
}
private void findMatchedPasspointSuggestionNetworks(List<ScanDetail> scanDetails,
@@ -98,7 +104,11 @@
for (Pair<ScanDetail, WifiConfiguration> candidate : candidates) {
Set<ExtendedWifiNetworkSuggestion> matchingPasspointExtSuggestions =
mWifiNetworkSuggestionsManager
- .getNetworkSuggestionsForFqdn(candidate.second.FQDN);
+ .getNetworkSuggestionsForFqdn(candidate.second.FQDN)
+ .stream()
+ .filter(
+ ens -> ens.isAutoJoinEnabled)
+ .collect(Collectors.toSet());
if (matchingPasspointExtSuggestions == null
|| matchingPasspointExtSuggestions.isEmpty()) {
continue;
@@ -109,19 +119,32 @@
}
private void findMatchedSuggestionNetworks(List<ScanDetail> scanDetails,
- MatchMetaInfo matchMetaInfo) {
+ MatchMetaInfo matchMetaInfo,
+ Set<ExtendedWifiNetworkSuggestion> autoJoinDisabledSuggestions) {
for (ScanDetail scanDetail : scanDetails) {
Set<ExtendedWifiNetworkSuggestion> matchingExtNetworkSuggestions =
mWifiNetworkSuggestionsManager.getNetworkSuggestionsForScanDetail(scanDetail);
if (matchingExtNetworkSuggestions == null || matchingExtNetworkSuggestions.isEmpty()) {
continue;
}
+ Set<ExtendedWifiNetworkSuggestion> autojoinEnableSuggestions =
+ matchingExtNetworkSuggestions.stream()
+ .filter(ewns -> ewns.isAutoJoinEnabled)
+ .collect(Collectors.toSet());
+ autoJoinDisabledSuggestions.addAll(
+ matchingExtNetworkSuggestions.stream()
+ .filter(ewns -> !ewns.isAutoJoinEnabled)
+ .collect(Collectors.toSet()));
+
+ if (autojoinEnableSuggestions.isEmpty()) {
+ continue;
+ }
// All matching suggestions have the same network credentials type. So, use any one of
// them to lookup/add the credentials to WifiConfigManager.
// Note: Apps could provide different credentials (password, ceritificate) for the same
// network, need to handle that in the future.
ExtendedWifiNetworkSuggestion matchingExtNetworkSuggestion =
- matchingExtNetworkSuggestions.stream().findAny().get();
+ autojoinEnableSuggestions.stream().findAny().get();
// Check if we already have a network with the same credentials in WifiConfigManager
// database.
WifiConfiguration wCmConfiguredNetwork =
@@ -129,12 +152,15 @@
matchingExtNetworkSuggestion.wns.wifiConfiguration.getKey());
if (wCmConfiguredNetwork != null) {
// If existing network is not from suggestion, ignore.
- if (!wCmConfiguredNetwork.fromWifiNetworkSuggestion) {
+ if (!(wCmConfiguredNetwork.fromWifiNetworkSuggestion
+ && wCmConfiguredNetwork.allowAutojoin)) {
continue;
}
// Update the WifiConfigManager with the latest WifiConfig
+ WifiConfiguration config = createConfigForAddingToWifiConfigManager(
+ matchingExtNetworkSuggestion.wns.wifiConfiguration, true);
NetworkUpdateResult result = mWifiConfigManager.addOrUpdateNetwork(
- matchingExtNetworkSuggestion.wns.wifiConfiguration,
+ config,
matchingExtNetworkSuggestion.perAppInfo.uid,
matchingExtNetworkSuggestion.perAppInfo.packageName);
if (result.isSuccess()) {
@@ -153,14 +179,48 @@
}
}
+ // Add auto-join disabled suggestions also to WifiConfigManager if the app allows credential
+ // sharing.This will surface these networks on the UI, to allow the user manually connect to it.
+ private void addAutojoinDisabledSuggestionToWifiConfigManager(
+ Set<ExtendedWifiNetworkSuggestion> autoJoinDisabledSuggestions) {
+ for (ExtendedWifiNetworkSuggestion ewns : autoJoinDisabledSuggestions) {
+ if (!ewns.wns.isUserAllowedToManuallyConnect) {
+ continue;
+ }
+ WifiConfiguration config =
+ createConfigForAddingToWifiConfigManager(ewns.wns.wifiConfiguration, false);
+ WifiConfiguration wCmConfiguredNetwork =
+ mWifiConfigManager.getConfiguredNetwork(config.getKey());
+ NetworkUpdateResult result = mWifiConfigManager.addOrUpdateNetwork(
+ config, ewns.perAppInfo.uid, ewns.perAppInfo.packageName);
+ if (!result.isSuccess()) {
+ mLocalLog.log("Failed to add network suggestion");
+ continue;
+ }
+ WifiConfiguration currentWCmConfiguredNetwork =
+ mWifiConfigManager.getConfiguredNetwork(result.netId);
+ // Try to enable network selection
+ if (wCmConfiguredNetwork == null) {
+ if (!mWifiConfigManager.updateNetworkSelectionStatus(result.getNetworkId(),
+ WifiConfiguration.NetworkSelectionStatus.NETWORK_SELECTION_ENABLE)) {
+ mLocalLog.log("Failed to make network suggestion selectable");
+ }
+ } else {
+ if (!currentWCmConfiguredNetwork.getNetworkSelectionStatus().isNetworkEnabled()
+ && !mWifiConfigManager.tryEnableNetwork(wCmConfiguredNetwork.networkId)) {
+ mLocalLog.log("Ignoring blacklisted network: "
+ + WifiNetworkSelector.toNetworkString(wCmConfiguredNetwork));
+ }
+ }
+ }
+ }
+
// Add and enable this network to the central database (i.e WifiConfigManager).
// Returns the copy of WifiConfiguration with the allocated network ID filled in.
private WifiConfiguration addCandidateToWifiConfigManager(
- @NonNull WifiConfiguration wifiConfiguration, int uid, @NonNull String packageName) {
- // Mark the network ephemeral because we don't want these persisted by WifiConfigManager.
- wifiConfiguration.ephemeral = true;
- wifiConfiguration.fromWifiNetworkSuggestion = true;
-
+ @NonNull WifiConfiguration config, int uid, @NonNull String packageName) {
+ WifiConfiguration wifiConfiguration =
+ createConfigForAddingToWifiConfigManager(config, true);
NetworkUpdateResult result =
mWifiConfigManager.addOrUpdateNetwork(wifiConfiguration, uid, packageName);
if (!result.isSuccess()) {
@@ -176,6 +236,16 @@
return mWifiConfigManager.getConfiguredNetwork(candidateNetworkId);
}
+ private WifiConfiguration createConfigForAddingToWifiConfigManager(WifiConfiguration config,
+ boolean allowAutojoin) {
+ WifiConfiguration wifiConfiguration = new WifiConfiguration(config);
+ // Mark the network ephemeral because we don't want these persisted by WifiConfigManager.
+ wifiConfiguration.ephemeral = true;
+ wifiConfiguration.fromWifiNetworkSuggestion = true;
+ wifiConfiguration.allowAutojoin = allowAutojoin;
+ return wifiConfiguration;
+ }
+
@Override
public @NominatorId int getId() {
return NOMINATOR_ID_SUGGESTION;
diff --git a/service/java/com/android/server/wifi/NetworkSuggestionStoreData.java b/service/java/com/android/server/wifi/NetworkSuggestionStoreData.java
index 2a4ae35..f3b5e95 100644
--- a/service/java/com/android/server/wifi/NetworkSuggestionStoreData.java
+++ b/service/java/com/android/server/wifi/NetworkSuggestionStoreData.java
@@ -65,6 +65,8 @@
private static final String XML_TAG_IS_USER_INTERACTION_REQUIRED = "IsUserInteractionRequired";
private static final String XML_TAG_IS_USER_ALLOWED_TO_MANUALLY_CONNECT =
"IsUserAllowedToManuallyConnect";
+ private static final String XML_TAG_IS_INITIALIZED_AUTO_JOIN = "InitializedAutoJoinEnabled";
+ private static final String XML_TAG_IS_AUTO_JOIN = "AutoJoinEnabled";
private static final String XML_TAG_SUGGESTOR_UID = "SuggestorUid";
private static final String XML_TAG_SUGGESTOR_PACKAGE_NAME = "SuggestorPackageName";
private static final String XML_TAG_SUGGESTOR_FEATURE_ID = "SuggestorFeatureId";
@@ -194,7 +196,7 @@
@Nullable WifiConfigStoreEncryptionUtil encryptionUtil)
throws XmlPullParserException, IOException {
for (ExtendedWifiNetworkSuggestion extNetworkSuggestion : extNetworkSuggestions) {
- serializeNetworkSuggestion(out, extNetworkSuggestion.wns, encryptionUtil);
+ serializeNetworkSuggestion(out, extNetworkSuggestion, encryptionUtil);
}
}
@@ -205,9 +207,11 @@
* @throws IOException
*/
private void serializeNetworkSuggestion(XmlSerializer out,
- final WifiNetworkSuggestion suggestion,
+ final ExtendedWifiNetworkSuggestion extSuggestion,
@Nullable WifiConfigStoreEncryptionUtil encryptionUtil)
throws XmlPullParserException, IOException {
+ WifiNetworkSuggestion suggestion = extSuggestion.wns;
+
XmlUtil.writeNextSectionStart(out, XML_TAG_SECTION_HEADER_NETWORK_SUGGESTION);
// Serialize WifiConfiguration.
@@ -239,6 +243,10 @@
suggestion.isUserInteractionRequired);
XmlUtil.writeNextValue(out, XML_TAG_IS_USER_ALLOWED_TO_MANUALLY_CONNECT,
suggestion.isUserAllowedToManuallyConnect);
+ XmlUtil.writeNextValue(out, XML_TAG_IS_INITIALIZED_AUTO_JOIN,
+ suggestion.isInitialAutoJoinEnabled);
+ XmlUtil.writeNextValue(out, XML_TAG_IS_AUTO_JOIN,
+ extSuggestion.isAutoJoinEnabled);
XmlUtil.writeNextSectionEnd(out, XML_TAG_SECTION_HEADER_NETWORK_SUGGESTION);
}
@@ -314,13 +322,14 @@
}
switch (tagName) {
case XML_TAG_SECTION_HEADER_NETWORK_SUGGESTION:
- WifiNetworkSuggestion networkSuggestion =
+ Pair<WifiNetworkSuggestion, Boolean> networkSuggestionData =
parseNetworkSuggestion(
in, outerTagDepth + 2, version, encryptionUtil,
perAppInfo);
perAppInfo.extNetworkSuggestions.add(
ExtendedWifiNetworkSuggestion.fromWns(
- networkSuggestion, perAppInfo));
+ networkSuggestionData.first, perAppInfo,
+ networkSuggestionData.second));
break;
default:
Log.w(TAG, "Ignoring unknown tag under "
@@ -356,8 +365,8 @@
* @throws XmlPullParserException
* @throws IOException
*/
- private WifiNetworkSuggestion parseNetworkSuggestion(XmlPullParser in, int outerTagDepth,
- @WifiConfigStore.Version int version,
+ private Pair<WifiNetworkSuggestion, Boolean> parseNetworkSuggestion(XmlPullParser in,
+ int outerTagDepth, @WifiConfigStore.Version int version,
@Nullable WifiConfigStoreEncryptionUtil encryptionUtil, PerAppInfo perAppInfo)
throws XmlPullParserException, IOException {
Pair<String, WifiConfiguration> parsedConfig = null;
@@ -366,6 +375,8 @@
boolean isAppInteractionRequired = false;
boolean isUserInteractionRequired = false;
boolean isUserAllowedToManuallyConnect = false; // Backward compatibility.
+ boolean isInitializedAutoJoinEnabled = true; // backward compat
+ boolean isAutoJoinEnabled = true; // backward compat
int suggestorUid = Process.INVALID_UID;
// Loop through and parse out all the elements from the stream within this section.
@@ -384,6 +395,12 @@
case XML_TAG_IS_USER_ALLOWED_TO_MANUALLY_CONNECT:
isUserAllowedToManuallyConnect = (boolean) value;
break;
+ case XML_TAG_IS_INITIALIZED_AUTO_JOIN:
+ isInitializedAutoJoinEnabled = (boolean) value;
+ break;
+ case XML_TAG_IS_AUTO_JOIN:
+ isAutoJoinEnabled = (boolean) value;
+ break;
case XML_TAG_SUGGESTOR_UID:
// Only needed for migration of data from Q to R.
suggestorUid = (int) value;
@@ -441,13 +458,13 @@
// ExtWifiNetworkSuggestion to the top level PerAppInfo. This block of code helps
// with migration of data for devices upgrading from Q to R.
perAppInfo.setUid(suggestorUid);
- WifiConfiguration wifiConfiguration = parsedConfig.second;
+ WifiConfiguration wifiConfiguration = parsedConfig.second;
if (enterpriseConfig != null) {
wifiConfiguration.enterpriseConfig = enterpriseConfig;
}
- return new WifiNetworkSuggestion(
- wifiConfiguration, passpointConfiguration, isAppInteractionRequired,
- isUserInteractionRequired, isUserAllowedToManuallyConnect);
+ return Pair.create(new WifiNetworkSuggestion(wifiConfiguration, passpointConfiguration,
+ isAppInteractionRequired, isUserInteractionRequired, isUserAllowedToManuallyConnect,
+ isInitializedAutoJoinEnabled), isAutoJoinEnabled);
}
}
diff --git a/service/java/com/android/server/wifi/SavedNetworkNominator.java b/service/java/com/android/server/wifi/SavedNetworkNominator.java
index 7603bbf..fdfa891 100644
--- a/service/java/com/android/server/wifi/SavedNetworkNominator.java
+++ b/service/java/com/android/server/wifi/SavedNetworkNominator.java
@@ -101,11 +101,6 @@
continue;
}
- // Ignore networks that the user has disallowed auto-join for.
- if (!network.allowAutojoin) {
- continue;
- }
-
/**
* Ignore Passpoint and Ephemeral networks. They are configured networks,
* but without being persisted to the storage. They are nominated by
@@ -116,6 +111,11 @@
continue;
}
+ // Ignore networks that the user has disallowed auto-join for.
+ if (!network.allowAutojoin) {
+ continue;
+ }
+
WifiConfiguration.NetworkSelectionStatus status =
network.getNetworkSelectionStatus();
// TODO (b/112196799): another side effect
diff --git a/service/java/com/android/server/wifi/WifiConfigManager.java b/service/java/com/android/server/wifi/WifiConfigManager.java
index dd3997a..1a10d93 100644
--- a/service/java/com/android/server/wifi/WifiConfigManager.java
+++ b/service/java/com/android/server/wifi/WifiConfigManager.java
@@ -1949,9 +1949,12 @@
+ " has no matching config");
return false;
}
+
config.allowAutojoin = choice;
sendConfiguredNetworkChangedBroadcast(config, WifiManager.CHANGE_REASON_CONFIG_CHANGE);
- saveToStore(true);
+ if (!config.ephemeral) {
+ saveToStore(true);
+ }
return true;
}
diff --git a/service/java/com/android/server/wifi/WifiNetworkSuggestionsManager.java b/service/java/com/android/server/wifi/WifiNetworkSuggestionsManager.java
index 5199759..7ac92c2 100644
--- a/service/java/com/android/server/wifi/WifiNetworkSuggestionsManager.java
+++ b/service/java/com/android/server/wifi/WifiNetworkSuggestionsManager.java
@@ -208,11 +208,14 @@
public final WifiNetworkSuggestion wns;
// Store the pointer to the corresponding app's meta data.
public final PerAppInfo perAppInfo;
+ public boolean isAutoJoinEnabled;
public ExtendedWifiNetworkSuggestion(@NonNull WifiNetworkSuggestion wns,
- @NonNull PerAppInfo perAppInfo) {
+ @NonNull PerAppInfo perAppInfo,
+ boolean isAutoJoinEnabled) {
this.wns = wns;
this.perAppInfo = perAppInfo;
+ this.isAutoJoinEnabled = isAutoJoinEnabled;
}
@Override
@@ -236,16 +239,18 @@
@Override
public String toString() {
- return wns.toString();
+ return new StringBuilder(wns.toString())
+ .append(", isAutoJoinEnabled=").append(isAutoJoinEnabled)
+ .toString();
}
/**
* Convert from {@link WifiNetworkSuggestion} to a new instance of
* {@link ExtendedWifiNetworkSuggestion}.
*/
- public static ExtendedWifiNetworkSuggestion fromWns(
- @NonNull WifiNetworkSuggestion wns, @NonNull PerAppInfo perAppInfo) {
- return new ExtendedWifiNetworkSuggestion(wns, perAppInfo);
+ public static ExtendedWifiNetworkSuggestion fromWns(@NonNull WifiNetworkSuggestion wns,
+ @NonNull PerAppInfo perAppInfo, boolean isAutoJoinEnabled) {
+ return new ExtendedWifiNetworkSuggestion(wns, perAppInfo, isAutoJoinEnabled);
}
}
@@ -623,7 +628,8 @@
return networkSuggestions
.stream()
.collect(Collectors.mapping(
- n -> ExtendedWifiNetworkSuggestion.fromWns(n, perAppInfo),
+ n -> ExtendedWifiNetworkSuggestion.fromWns(n, perAppInfo,
+ n.isInitialAutoJoinEnabled),
Collectors.toSet()));
}
@@ -709,6 +715,7 @@
if (carrierId != TelephonyManager.UNKNOWN_CARRIER_ID) {
ewns.wns.passpointConfiguration.setCarrierId(carrierId);
}
+ ewns.wns.passpointConfiguration.setAutoJoinEnabled(ewns.isAutoJoinEnabled);
// Install Passpoint config, if failure, ignore that suggestion
if (!mWifiInjector.getPasspointManager().addOrUpdateProvider(
ewns.wns.passpointConfiguration, uid,
@@ -1584,6 +1591,33 @@
}
/**
+ * Set auto-join enable/disable for suggestion network
+ * @param config WifiConfiguration which is to change.
+ * @param choice true to enable auto-join, false to disable.
+ * @return true on success, false otherwise (e.g. if no match suggestion exists).
+ */
+ public boolean allowNetworkSuggestionAutojoin(WifiConfiguration config, boolean choice) {
+ if (!config.fromWifiNetworkSuggestion) {
+ Log.e(TAG, "allowNetworkSuggestionAutojoin: on non-suggestion network: "
+ + config);
+ return false;
+ }
+
+ Set<ExtendedWifiNetworkSuggestion> matchingExtendedWifiNetworkSuggestions =
+ getNetworkSuggestionsForWifiConfiguration(config, config.BSSID);
+ if (config.isPasspoint()) {
+ if (!mWifiInjector.getPasspointManager().enableAutojoin(config.FQDN, choice)) {
+ return false;
+ }
+ }
+ for (ExtendedWifiNetworkSuggestion ewns : matchingExtendedWifiNetworkSuggestions) {
+ ewns.isAutoJoinEnabled = choice;
+ }
+ saveToStore();
+ return true;
+ }
+
+ /**
* Dump of {@link WifiNetworkSuggestionsManager}.
*/
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
@@ -1606,4 +1640,3 @@
+ mActiveNetworkSuggestionsMatchingConnection);
}
}
-
diff --git a/service/java/com/android/server/wifi/WifiServiceImpl.java b/service/java/com/android/server/wifi/WifiServiceImpl.java
index 4bd2927..3dc8b14 100644
--- a/service/java/com/android/server/wifi/WifiServiceImpl.java
+++ b/service/java/com/android/server/wifi/WifiServiceImpl.java
@@ -2417,8 +2417,35 @@
int callingUid = Binder.getCallingUid();
mLog.info("allowAutojoin=% uid=%").c(choice).c(callingUid).flush();
- mWifiThreadRunner.post(
- () -> mWifiConfigManager.allowAutojoin(netId, choice));
+ mWifiThreadRunner.post(() -> {
+ WifiConfiguration config = mWifiConfigManager.getConfiguredNetwork(netId);
+ if (config == null) {
+ return;
+ }
+ if (config.fromWifiNetworkSpecifier) {
+ Log.e(TAG, "Auto-join configuration is not permitted for NetworkSpecifier "
+ + "connections: " + config);
+ return;
+ }
+ if (config.isPasspoint() && !config.isEphemeral()) {
+ Log.e(TAG,
+ "Auto-join configuration for a non-ephemeral Passpoint network should be "
+ + "configured using FQDN: "
+ + config);
+ return;
+ }
+ // If the network is a suggestion, store the auto-join configure to the
+ // WifiNetWorkSuggestionsManager.
+ if (config.fromWifiNetworkSuggestion) {
+ if (!mWifiNetworkSuggestionsManager
+ .allowNetworkSuggestionAutojoin(config, choice)) {
+ return;
+ }
+ }
+ // even for Suggestion, modify the current ephemeral configuration so that
+ // existing configuration auto-connection is updated correctly
+ mWifiConfigManager.allowAutojoin(netId, choice);
+ });
}
/**
diff --git a/service/tests/wifitests/src/com/android/server/wifi/NetworkSuggestionNominatorTest.java b/service/tests/wifitests/src/com/android/server/wifi/NetworkSuggestionNominatorTest.java
index 0d2f239..b53fcb5 100644
--- a/service/tests/wifitests/src/com/android/server/wifi/NetworkSuggestionNominatorTest.java
+++ b/service/tests/wifitests/src/com/android/server/wifi/NetworkSuggestionNominatorTest.java
@@ -17,14 +17,25 @@
package com.android.server.wifi;
import static android.net.wifi.WifiConfiguration.INVALID_NETWORK_ID;
-import static android.net.wifi.WifiConfiguration.NetworkSelectionStatus
- .NETWORK_SELECTION_TEMPORARY_DISABLED;
+import static android.net.wifi.WifiConfiguration.NetworkSelectionStatus.NETWORK_SELECTION_TEMPORARY_DISABLED;
import static com.android.server.wifi.WifiConfigurationTestUtil.SECURITY_PSK;
import static com.android.server.wifi.WifiConfigurationTestUtil.generateWifiConfig;
-import static org.junit.Assert.*;
-import static org.mockito.Mockito.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.any;
+import static org.mockito.Mockito.anyInt;
+import static org.mockito.Mockito.anyString;
+import static org.mockito.Mockito.argThat;
+import static org.mockito.Mockito.atLeast;
+import static org.mockito.Mockito.eq;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+import static org.mockito.Mockito.when;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiNetworkSuggestion;
@@ -96,11 +107,14 @@
int[] priorities = {};
int[] uids = {};
String[] packageNames = {};
+ boolean[] autojoin = {};
+ boolean[] shareWithUser = {};
ScanDetail[] scanDetails =
buildScanDetails(scanSsids, bssids, freqs, caps, levels, mClock);
ExtendedWifiNetworkSuggestion[] suggestions = buildNetworkSuggestions(suggestionSsids,
- securities, appInteractions, meteredness, priorities, uids, packageNames);
+ securities, appInteractions, meteredness, priorities, uids,
+ packageNames, autojoin, shareWithUser);
// Link the scan result with suggestions.
linkScanDetailsWithNetworkSuggestions(scanDetails, suggestions);
@@ -132,11 +146,14 @@
int[] priorities = {-1};
int[] uids = {TEST_UID};
String[] packageNames = {TEST_PACKAGE};
+ boolean[] autojoin = {true};
+ boolean[] shareWithUser = {true};
ScanDetail[] scanDetails =
buildScanDetails(scanSsids, bssids, freqs, caps, levels, mClock);
ExtendedWifiNetworkSuggestion[] suggestions = buildNetworkSuggestions(suggestionSsids,
- securities, appInteractions, meteredness, priorities, uids, packageNames);
+ securities, appInteractions, meteredness, priorities, uids,
+ packageNames, autojoin, shareWithUser);
// Link the scan result with suggestions.
linkScanDetailsWithNetworkSuggestions(scanDetails, suggestions);
// setup config manager interactions.
@@ -173,11 +190,14 @@
int[] priorities = {-1, -1};
int[] uids = {TEST_UID, TEST_UID};
String[] packageNames = {TEST_PACKAGE, TEST_PACKAGE};
+ boolean[] autojoin = {true, true};
+ boolean[] shareWithUser = {true, true};
ScanDetail[] scanDetails =
buildScanDetails(scanSsids, bssids, freqs, caps, levels, mClock);
ExtendedWifiNetworkSuggestion[] suggestions = buildNetworkSuggestions(suggestionSsids,
- securities, appInteractions, meteredness, priorities, uids, packageNames);
+ securities, appInteractions, meteredness, priorities, uids,
+ packageNames, autojoin, shareWithUser);
// Link the scan result with suggestions.
linkScanDetailsWithNetworkSuggestions(scanDetails, suggestions);
// setup config manager interactions.
@@ -216,11 +236,14 @@
int[] priorities = {5, 1};
int[] uids = {TEST_UID, TEST_UID};
String[] packageNames = {TEST_PACKAGE, TEST_PACKAGE};
+ boolean[] autojoin = {true, true};
+ boolean[] shareWithUser = {true, true};
ScanDetail[] scanDetails =
buildScanDetails(scanSsids, bssids, freqs, caps, levels, mClock);
ExtendedWifiNetworkSuggestion[] suggestions = buildNetworkSuggestions(suggestionSsids,
- securities, appInteractions, meteredness, priorities, uids, packageNames);
+ securities, appInteractions, meteredness, priorities, uids,
+ packageNames, autojoin, shareWithUser);
// Link the scan result with suggestions.
linkScanDetailsWithNetworkSuggestions(scanDetails, suggestions);
// setup config manager interactions.
@@ -260,11 +283,14 @@
int[] priorities = {-1, -1, -1};
int[] uids = {TEST_UID, TEST_UID, TEST_UID_OTHER};
String[] packageNames = {TEST_PACKAGE, TEST_PACKAGE, TEST_PACKAGE_OTHER};
+ boolean[] autojoin = {true, true, true};
+ boolean[] shareWithUser = {true, true, true};
ScanDetail[] scanDetails =
buildScanDetails(scanSsids, bssids, freqs, caps, levels, mClock);
ExtendedWifiNetworkSuggestion[] suggestions = buildNetworkSuggestions(suggestionSsids,
- securities, appInteractions, meteredness, priorities, uids, packageNames);
+ securities, appInteractions, meteredness, priorities, uids,
+ packageNames, autojoin, shareWithUser);
// Link the scan result with suggestions.
linkScanDetailsWithNetworkSuggestions(scanDetails, suggestions);
// setup config manager interactions.
@@ -314,11 +340,14 @@
int[] uids = {TEST_UID, TEST_UID, TEST_UID_OTHER, TEST_UID_OTHER};
String[] packageNames = {TEST_PACKAGE, TEST_PACKAGE, TEST_PACKAGE_OTHER,
TEST_PACKAGE_OTHER};
+ boolean[] autojoin = {true, true, true, true};
+ boolean[] shareWithUser = {true, true, true, true};
ScanDetail[] scanDetails =
buildScanDetails(scanSsids, bssids, freqs, caps, levels, mClock);
ExtendedWifiNetworkSuggestion[] suggestions = buildNetworkSuggestions(suggestionSsids,
- securities, appInteractions, meteredness, priorities, uids, packageNames);
+ securities, appInteractions, meteredness, priorities, uids,
+ packageNames, autojoin, shareWithUser);
// Link the scan result with suggestions.
linkScanDetailsWithNetworkSuggestions(scanDetails, suggestions);
// setup config manager interactions.
@@ -359,11 +388,14 @@
int[] priorities = {-1};
int[] uids = {TEST_UID};
String[] packageNames = {TEST_PACKAGE};
+ boolean[] autojoin = {true};
+ boolean[] shareWithUser = {true};
ScanDetail[] scanDetails =
buildScanDetails(scanSsids, bssids, freqs, caps, levels, mClock);
ExtendedWifiNetworkSuggestion[] suggestions = buildNetworkSuggestions(suggestionSsids,
- securities, appInteractions, meteredness, priorities, uids, packageNames);
+ securities, appInteractions, meteredness, priorities, uids,
+ packageNames, autojoin, shareWithUser);
// Link the scan result with suggestions.
linkScanDetailsWithNetworkSuggestions(scanDetails, suggestions);
// Fail add to WifiConfigManager
@@ -409,11 +441,14 @@
int[] priorities = {-1};
int[] uids = {TEST_UID};
String[] packageNames = {TEST_PACKAGE};
+ boolean[] autojoin = {true};
+ boolean[] shareWithUser = {true};
ScanDetail[] scanDetails =
buildScanDetails(scanSsids, bssids, freqs, caps, levels, mClock);
ExtendedWifiNetworkSuggestion[] suggestions = buildNetworkSuggestions(suggestionSsids,
- securities, appInteractions, meteredness, priorities, uids, packageNames);
+ securities, appInteractions, meteredness, priorities, uids,
+ packageNames, autojoin, shareWithUser);
// Link the scan result with suggestions.
linkScanDetailsWithNetworkSuggestions(scanDetails, suggestions);
// setup config manager interactions.
@@ -438,7 +473,8 @@
.wasEphemeralNetworkDeleted(anyString());
verify(mWifiConfigManager)
.getConfiguredNetwork(suggestions[0].wns.wifiConfiguration.getKey());
- verify(mWifiConfigManager).addOrUpdateNetwork(eq(suggestions[0].wns.wifiConfiguration),
+ verify(mWifiConfigManager).addOrUpdateNetwork(
+ argThat(new WifiConfigMatcher(suggestions[0].wns.wifiConfiguration)),
eq(suggestions[0].perAppInfo.uid), eq(suggestions[0].perAppInfo.packageName));
verify(mWifiConfigManager).getConfiguredNetwork(
suggestions[0].wns.wifiConfiguration.networkId);
@@ -467,11 +503,14 @@
int[] priorities = {-1};
int[] uids = {TEST_UID};
String[] packageNames = {TEST_PACKAGE};
+ boolean[] autojoin = {true};
+ boolean[] shareWithUser = {true};
ScanDetail[] scanDetails =
buildScanDetails(scanSsids, bssids, freqs, caps, levels, mClock);
ExtendedWifiNetworkSuggestion[] suggestions = buildNetworkSuggestions(suggestionSsids,
- securities, appInteractions, meteredness, priorities, uids, packageNames);
+ securities, appInteractions, meteredness, priorities, uids,
+ packageNames, autojoin, shareWithUser);
// Link the scan result with suggestions.
linkScanDetailsWithNetworkSuggestions(scanDetails, suggestions);
// setup config manager interactions.
@@ -514,11 +553,14 @@
int[] priorities = {-1};
int[] uids = {TEST_UID};
String[] packageNames = {TEST_PACKAGE};
+ boolean[] autojoin = {true};
+ boolean[] shareWithUser = {true};
ScanDetail[] scanDetails =
buildScanDetails(scanSsids, bssids, freqs, caps, levels, mClock);
ExtendedWifiNetworkSuggestion[] suggestions = buildNetworkSuggestions(suggestionSsids,
- securities, appInteractions, meteredness, priorities, uids, packageNames);
+ securities, appInteractions, meteredness, priorities, uids,
+ packageNames, autojoin, shareWithUser);
// Link the scan result with suggestions.
linkScanDetailsWithNetworkSuggestions(scanDetails, suggestions);
// setup config manager interactions.
@@ -545,7 +587,8 @@
.wasEphemeralNetworkDeleted(anyString());
verify(mWifiConfigManager).getConfiguredNetwork(eq(
suggestions[0].wns.wifiConfiguration.getKey()));
- verify(mWifiConfigManager).addOrUpdateNetwork(eq(suggestions[0].wns.wifiConfiguration),
+ verify(mWifiConfigManager).addOrUpdateNetwork(
+ argThat(new WifiConfigMatcher(suggestions[0].wns.wifiConfiguration)),
eq(suggestions[0].perAppInfo.uid), eq(suggestions[0].perAppInfo.packageName));
verify(mWifiConfigManager).getConfiguredNetwork(
suggestions[0].wns.wifiConfiguration.networkId);
@@ -577,11 +620,14 @@
int[] priorities = {-1};
int[] uids = {TEST_UID};
String[] packageNames = {TEST_PACKAGE};
+ boolean[] autojoin = {true};
+ boolean[] shareWithUser = {true};
ScanDetail[] scanDetails =
buildScanDetails(scanSsids, bssids, freqs, caps, levels, mClock);
ExtendedWifiNetworkSuggestion[] suggestions = buildNetworkSuggestions(suggestionSsids,
- securities, appInteractions, meteredness, priorities, uids, packageNames);
+ securities, appInteractions, meteredness, priorities, uids,
+ packageNames, autojoin, shareWithUser);
// Link the scan result with suggestions.
linkScanDetailsWithNetworkSuggestions(scanDetails, suggestions);
// setup config manager interactions.
@@ -610,7 +656,8 @@
.wasEphemeralNetworkDeleted(anyString());
verify(mWifiConfigManager).getConfiguredNetwork(eq(
suggestions[0].wns.wifiConfiguration.getKey()));
- verify(mWifiConfigManager).addOrUpdateNetwork(eq(suggestions[0].wns.wifiConfiguration),
+ verify(mWifiConfigManager).addOrUpdateNetwork(
+ argThat(new WifiConfigMatcher(suggestions[0].wns.wifiConfiguration)),
eq(suggestions[0].perAppInfo.uid), eq(suggestions[0].perAppInfo.packageName));
verify(mWifiConfigManager).getConfiguredNetwork(
suggestions[0].wns.wifiConfiguration.networkId);
@@ -639,10 +686,14 @@
int[] priorities = {-1};
int[] uids = {TEST_UID};
String[] packageNames = {TEST_PACKAGE};
+ boolean[] autojoin = {true};
+ boolean[] shareWithUser = {true};
+
ScanDetail[] scanDetails =
buildScanDetails(scanSsids, bssids, freqs, caps, levels, mClock);
ExtendedWifiNetworkSuggestion[] suggestions = buildNetworkSuggestions(suggestionSsids,
- securities, appInteractions, meteredness, priorities, uids, packageNames);
+ securities, appInteractions, meteredness, priorities, uids, packageNames,
+ autojoin, shareWithUser);
HashSet<ExtendedWifiNetworkSuggestion> matchedExtSuggestions = new HashSet<>();
matchedExtSuggestions.add(suggestions[0]);
List<Pair<ScanDetail, WifiConfiguration>> passpointCandidates = new ArrayList<>();
@@ -663,6 +714,55 @@
validateConnectableNetworks(connectableNetworks, new String[] {scanSsids[0]});
}
+ /**
+ * Ensure that we will not nominate the matching network suggestions which auto-join is
+ * disabled.
+ * Expected connectable Networks: {}
+ */
+ @Test
+ public void testSelectNetworkSuggestionForOneMatchButAutojoinDisabled() {
+ String[] scanSsids = {"test1", "test2"};
+ String[] bssids = {"6c:f3:7f:ae:8c:f3", "6c:f3:7f:ae:8c:f4"};
+ int[] freqs = {2470, 2437};
+ String[] caps = {"[WPA2-EAP-CCMP][ESS]", "[WPA2-EAP-CCMP][ESS]"};
+ int[] levels = {-67, -76};
+ String[] suggestionSsids = {"\"" + scanSsids[0] + "\"", "\"" + scanSsids[1] + "\""};
+ int[] securities = {SECURITY_PSK, SECURITY_PSK};
+ boolean[] appInteractions = {true, true};
+ boolean[] meteredness = {true, true};
+ int[] priorities = {-1, -1};
+ int[] uids = {TEST_UID, TEST_UID};
+ String[] packageNames = {TEST_PACKAGE, TEST_PACKAGE};
+ boolean[] autojoin = {false, false};
+ boolean[] shareWithUser = {true, false};
+
+ ScanDetail[] scanDetails =
+ buildScanDetails(scanSsids, bssids, freqs, caps, levels, mClock);
+ ExtendedWifiNetworkSuggestion[] suggestions = buildNetworkSuggestions(suggestionSsids,
+ securities, appInteractions, meteredness, priorities, uids,
+ packageNames, autojoin, shareWithUser);
+ // Link the scan result with suggestions.
+ linkScanDetailsWithNetworkSuggestions(scanDetails, suggestions);
+ // setup config manager interactions.
+ setupAddToWifiConfigManager(suggestions[0].wns.wifiConfiguration,
+ suggestions[1].wns.wifiConfiguration);
+
+ List<Pair<ScanDetail, WifiConfiguration>> connectableNetworks = new ArrayList<>();
+ mNetworkSuggestionNominator.nominateNetworks(
+ Arrays.asList(scanDetails), null, null, true, false,
+ (ScanDetail scanDetail, WifiConfiguration configuration) -> {
+ connectableNetworks.add(Pair.create(scanDetail, configuration));
+ });
+
+ // Verify no network is nominated.
+ assertTrue(connectableNetworks.isEmpty());
+ // Verify we only add network apps shared with user to WifiConfigManager
+ verifyAddToWifiConfigManager(suggestions[0].wns.wifiConfiguration);
+ verify(mWifiConfigManager, never())
+ .addOrUpdateNetwork(argThat(new WifiConfigMatcher(
+ suggestions[1].wns.wifiConfiguration)), anyInt(), anyString());
+ }
+
private void setupAddToWifiConfigManager(WifiConfiguration...candidates) {
for (int i = 0; i < candidates.length; i++) {
WifiConfiguration candidate = candidates[i];
@@ -753,7 +853,8 @@
private ExtendedWifiNetworkSuggestion[] buildNetworkSuggestions(
String[] ssids, int[] securities, boolean[] appInteractions, boolean[] meteredness,
- int[] priorities, int[] uids, String[] packageNames) {
+ int[] priorities, int[] uids, String[] packageNames, boolean[] autojoin,
+ boolean[] shareWithUser) {
WifiConfiguration[] configs = buildWifiConfigurations(ssids, securities);
ExtendedWifiNetworkSuggestion[] suggestions =
new ExtendedWifiNetworkSuggestion[configs.length];
@@ -764,8 +865,9 @@
: WifiConfiguration.METERED_OVERRIDE_NONE;
PerAppInfo perAppInfo = new PerAppInfo(uids[i], packageNames[i], null);
WifiNetworkSuggestion suggestion =
- new WifiNetworkSuggestion(configs[i], null, appInteractions[i], false, true);
- suggestions[i] = new ExtendedWifiNetworkSuggestion(suggestion, perAppInfo);
+ new WifiNetworkSuggestion(configs[i], null, appInteractions[i], false,
+ shareWithUser[i], true);
+ suggestions[i] = new ExtendedWifiNetworkSuggestion(suggestion, perAppInfo, autojoin[i]);
}
return suggestions;
}
diff --git a/service/tests/wifitests/src/com/android/server/wifi/NetworkSuggestionStoreDataTest.java b/service/tests/wifitests/src/com/android/server/wifi/NetworkSuggestionStoreDataTest.java
index ae40804..6f77b16 100644
--- a/service/tests/wifitests/src/com/android/server/wifi/NetworkSuggestionStoreDataTest.java
+++ b/service/tests/wifitests/src/com/android/server/wifi/NetworkSuggestionStoreDataTest.java
@@ -284,10 +284,10 @@
configuration.enterpriseConfig =
WifiConfigurationTestUtil.createPEAPWifiEnterpriseConfigWithGTCPhase2();
WifiNetworkSuggestion networkSuggestion =
- new WifiNetworkSuggestion(configuration, null, false, false, true);
+ new WifiNetworkSuggestion(configuration, null, false, false, true, true);
appInfo.hasUserApproved = false;
appInfo.extNetworkSuggestions.add(
- ExtendedWifiNetworkSuggestion.fromWns(networkSuggestion, appInfo));
+ ExtendedWifiNetworkSuggestion.fromWns(networkSuggestion, appInfo, true));
networkSuggestionsMap.put(TEST_PACKAGE_NAME_1, appInfo);
Map<String, PerAppInfo> deserializedPerAppInfoMap =
@@ -313,18 +313,18 @@
PerAppInfo appInfo1 = new PerAppInfo(TEST_UID_1, TEST_PACKAGE_NAME_1, TEST_FEATURE_ID);
WifiNetworkSuggestion networkSuggestion1 = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true, true);
appInfo1.hasUserApproved = false;
appInfo1.extNetworkSuggestions.add(
- ExtendedWifiNetworkSuggestion.fromWns(networkSuggestion1, appInfo1));
+ ExtendedWifiNetworkSuggestion.fromWns(networkSuggestion1, appInfo1, true));
networkSuggestionsMap.put(TEST_PACKAGE_NAME_1, appInfo1);
PerAppInfo appInfo2 = new PerAppInfo(TEST_UID_2, TEST_PACKAGE_NAME_2, TEST_FEATURE_ID);
WifiNetworkSuggestion networkSuggestion2 = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, true, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, true, false, true, true);
appInfo2.hasUserApproved = true;
appInfo2.extNetworkSuggestions.add(
- ExtendedWifiNetworkSuggestion.fromWns(networkSuggestion2, appInfo2));
+ ExtendedWifiNetworkSuggestion.fromWns(networkSuggestion2, appInfo2, true));
networkSuggestionsMap.put(TEST_PACKAGE_NAME_2, appInfo2);
assertSerializeDeserialize(networkSuggestionsMap);
@@ -339,26 +339,26 @@
PerAppInfo appInfo1 = new PerAppInfo(TEST_UID_1, TEST_PACKAGE_NAME_1, TEST_FEATURE_ID);
WifiNetworkSuggestion networkSuggestion1 = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, false, true, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, false, true, true, true);
WifiNetworkSuggestion networkSuggestion2 = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, true, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, true, false, true, true);
appInfo1.hasUserApproved = true;
appInfo1.extNetworkSuggestions.add(
- ExtendedWifiNetworkSuggestion.fromWns(networkSuggestion1, appInfo1));
+ ExtendedWifiNetworkSuggestion.fromWns(networkSuggestion1, appInfo1, true));
appInfo1.extNetworkSuggestions.add(
- ExtendedWifiNetworkSuggestion.fromWns(networkSuggestion2, appInfo1));
+ ExtendedWifiNetworkSuggestion.fromWns(networkSuggestion2, appInfo1, true));
networkSuggestionsMap.put(TEST_PACKAGE_NAME_1, appInfo1);
PerAppInfo appInfo2 = new PerAppInfo(TEST_UID_2, TEST_PACKAGE_NAME_2, TEST_FEATURE_ID);
WifiNetworkSuggestion networkSuggestion3 = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, true, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, true, false, true, true);
WifiNetworkSuggestion networkSuggestion4 = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, false, true, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, false, true, true, true);
appInfo2.hasUserApproved = true;
appInfo2.extNetworkSuggestions.add(
- ExtendedWifiNetworkSuggestion.fromWns(networkSuggestion3, appInfo2));
+ ExtendedWifiNetworkSuggestion.fromWns(networkSuggestion3, appInfo2, true));
appInfo2.extNetworkSuggestions.add(
- ExtendedWifiNetworkSuggestion.fromWns(networkSuggestion4, appInfo2));
+ ExtendedWifiNetworkSuggestion.fromWns(networkSuggestion4, appInfo2, true));
networkSuggestionsMap.put(TEST_PACKAGE_NAME_2, appInfo2);
assertSerializeDeserialize(networkSuggestionsMap);
diff --git a/service/tests/wifitests/src/com/android/server/wifi/WakeupControllerTest.java b/service/tests/wifitests/src/com/android/server/wifi/WakeupControllerTest.java
index 8b66430..e6d4e34 100644
--- a/service/tests/wifitests/src/com/android/server/wifi/WakeupControllerTest.java
+++ b/service/tests/wifitests/src/com/android/server/wifi/WakeupControllerTest.java
@@ -368,10 +368,10 @@
// suggestions
WifiConfiguration openNetwork = WifiConfigurationTestUtil.createOpenNetwork(quotedSsid);
WifiNetworkSuggestion openNetworkSuggestion =
- new WifiNetworkSuggestion(openNetwork, null, false, false, true);
+ new WifiNetworkSuggestion(openNetwork, null, false, false, true, true);
WifiConfiguration wepNetwork = WifiConfigurationTestUtil.createWepNetwork();
WifiNetworkSuggestion wepNetworkSuggestion =
- new WifiNetworkSuggestion(wepNetwork, null, false, false, true);
+ new WifiNetworkSuggestion(wepNetwork, null, false, false, true, true);
when(mWifiNetworkSuggestionsManager.getAllNetworkSuggestions())
.thenReturn(new HashSet<>(Arrays.asList(
openNetworkSuggestion, wepNetworkSuggestion)));
@@ -413,7 +413,7 @@
WifiConfiguration oweNetwork = WifiConfigurationTestUtil.createOweNetwork(quotedSsid2);
WifiNetworkSuggestion oweNetworkSuggestion =
- new WifiNetworkSuggestion(oweNetwork, null, false, false, true);
+ new WifiNetworkSuggestion(oweNetwork, null, false, false, true, true);
when(mWifiNetworkSuggestionsManager.getAllNetworkSuggestions())
.thenReturn(new HashSet<>(Arrays.asList(oweNetworkSuggestion)));
@@ -511,7 +511,7 @@
WifiConfiguration openNetwork = WifiConfigurationTestUtil
.createOpenNetwork(ScanResultUtil.createQuotedSSID(SAVED_SSID));
WifiNetworkSuggestion openNetworkSuggestion =
- new WifiNetworkSuggestion(openNetwork, null, false, false, true);
+ new WifiNetworkSuggestion(openNetwork, null, false, false, true, true);
when(mWifiNetworkSuggestionsManager.getAllNetworkSuggestions())
.thenReturn(new HashSet<>(Collections.singletonList(openNetworkSuggestion)));
diff --git a/service/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java b/service/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java
index 9e85cae..e38efdf 100644
--- a/service/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java
+++ b/service/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java
@@ -140,6 +140,7 @@
@Mock private DeviceConfigFacade mDeviceConfigFacade;
@Mock private MacAddressUtil mMacAddressUtil;
@Mock private BssidBlocklistMonitor mBssidBlocklistMonitor;
+ @Mock private WifiNetworkSuggestionsManager mWifiNetworkSuggestionsManager;
private MockResources mResources;
private InOrder mContextConfigStoreMockOrder;
@@ -217,6 +218,8 @@
when(mWifiPermissionsUtil.checkNetworkSettingsPermission(anyInt())).thenReturn(true);
when(mWifiPermissionsUtil.isDeviceOwner(anyInt(), any())).thenReturn(false);
when(mWifiPermissionsUtil.isProfileOwner(anyInt(), any())).thenReturn(false);
+ when(mWifiInjector.getWifiNetworkSuggestionsManager())
+ .thenReturn(mWifiNetworkSuggestionsManager);
when(mWifiInjector.getBssidBlocklistMonitor()).thenReturn(mBssidBlocklistMonitor);
when(mWifiInjector.getWifiLastResortWatchdog()).thenReturn(mWifiLastResortWatchdog);
when(mWifiInjector.getWifiLastResortWatchdog().shouldIgnoreSsidUpdate())
@@ -1308,7 +1311,7 @@
/**
* Verifies the allowance/disallowance of autojoin to a network using
- * {@link WifiConfigManager.allowAutojoin(int, boolean)}
+ * {@link WifiConfigManager#allowAutojoin(int, boolean)}
*/
@Test
public void testAllowDisallowAutojoin() throws Exception {
diff --git a/service/tests/wifitests/src/com/android/server/wifi/WifiNetworkSuggestionsManagerTest.java b/service/tests/wifitests/src/com/android/server/wifi/WifiNetworkSuggestionsManagerTest.java
index 83e7c68..1cd3b1d 100644
--- a/service/tests/wifitests/src/com/android/server/wifi/WifiNetworkSuggestionsManagerTest.java
+++ b/service/tests/wifitests/src/com/android/server/wifi/WifiNetworkSuggestionsManagerTest.java
@@ -213,9 +213,9 @@
WifiConfiguration dummyConfiguration = new WifiConfiguration();
dummyConfiguration.FQDN = TEST_FQDN;
WifiNetworkSuggestion networkSuggestion1 = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true, true);
WifiNetworkSuggestion networkSuggestion2 = new WifiNetworkSuggestion(
- dummyConfiguration, passpointConfiguration, false, false, true);
+ dummyConfiguration, passpointConfiguration, false, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList1 =
new ArrayList<WifiNetworkSuggestion>() {{
@@ -265,9 +265,9 @@
WifiConfiguration dummyConfiguration = new WifiConfiguration();
dummyConfiguration.FQDN = TEST_FQDN;
WifiNetworkSuggestion networkSuggestion1 = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true, true);
WifiNetworkSuggestion networkSuggestion2 = new WifiNetworkSuggestion(
- dummyConfiguration, passpointConfiguration, false, false, true);
+ dummyConfiguration, passpointConfiguration, false, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList1 =
new ArrayList<WifiNetworkSuggestion>() {{
@@ -317,9 +317,9 @@
WifiConfiguration dummyConfiguration = new WifiConfiguration();
dummyConfiguration.FQDN = TEST_FQDN;
WifiNetworkSuggestion networkSuggestion1 = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true, true);
WifiNetworkSuggestion networkSuggestion2 = new WifiNetworkSuggestion(
- dummyConfiguration, passpointConfiguration, false, false, true);
+ dummyConfiguration, passpointConfiguration, false, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList1 =
@@ -358,7 +358,7 @@
@Test
public void testReplaceNetworkSuggestionsSuccess() {
WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList1 =
new ArrayList<WifiNetworkSuggestion>() {{
@@ -390,7 +390,7 @@
@Test
public void testAddNetworkSuggestionsSuccessOnInPlaceModification() {
WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList1 =
new ArrayList<WifiNetworkSuggestion>() {{
add(networkSuggestion);
@@ -422,7 +422,7 @@
List<WifiNetworkSuggestion> networkSuggestionList = new ArrayList<>();
for (int i = 0; i < WifiManager.NETWORK_SUGGESTIONS_MAX_PER_APP_HIGH_RAM; i++) {
networkSuggestionList.add(new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true));
+ WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true, true));
}
// The first add should succeed.
assertEquals(WifiManager.STATUS_NETWORK_SUGGESTIONS_SUCCESS,
@@ -434,7 +434,7 @@
networkSuggestionList = new ArrayList<>();
for (int i = 0; i < 3; i++) {
networkSuggestionList.add(new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true));
+ WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true, true));
}
// The second add should fail.
assertEquals(WifiManager.STATUS_NETWORK_SUGGESTIONS_ERROR_ADD_EXCEEDS_MAX_PER_APP,
@@ -455,7 +455,7 @@
networkSuggestionList = new ArrayList<>();
for (int i = 0; i < 2; i++) {
networkSuggestionList.add(new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true));
+ WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true, true));
}
// This add should now succeed.
assertEquals(WifiManager.STATUS_NETWORK_SUGGESTIONS_SUCCESS,
@@ -469,9 +469,9 @@
@Test
public void testRemoveNetworkSuggestionsFailureOnInvalid() {
WifiNetworkSuggestion networkSuggestion1 = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true, true);
WifiNetworkSuggestion networkSuggestion2 = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList1 =
new ArrayList<WifiNetworkSuggestion>() {{
@@ -497,7 +497,7 @@
public void
testGetNetworkSuggestionsForScanDetailSuccessWithOneMatchForCarrierProvisioningApp() {
WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList1 =
new ArrayList<WifiNetworkSuggestion>() {{
add(networkSuggestion);
@@ -530,7 +530,7 @@
WifiEnterpriseConfig.Eap.SIM, WifiEnterpriseConfig.Phase2.NONE);
config.carrierId = VALID_CARRIER_ID;
WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(
- config, null, false, false, true);
+ config, null, false, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList1 =
new ArrayList<WifiNetworkSuggestion>() {{
add(networkSuggestion);
@@ -560,7 +560,7 @@
@Test
public void testGetNetworkSuggestionsForScanDetailSuccessWithOneMatch() {
WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList1 =
new ArrayList<WifiNetworkSuggestion>() {{
add(networkSuggestion);
@@ -588,10 +588,10 @@
public void testGetNetworkSuggestionsForScanDetailSuccessWithMultipleMatch() {
WifiConfiguration wifiConfiguration = WifiConfigurationTestUtil.createOpenNetwork();
WifiNetworkSuggestion networkSuggestion1 = new WifiNetworkSuggestion(
- wifiConfiguration, null, false, false, true);
+ wifiConfiguration, null, false, false, true, true);
// Reuse the same network credentials to ensure they both match.
WifiNetworkSuggestion networkSuggestion2 = new WifiNetworkSuggestion(
- wifiConfiguration, null, false, false, true);
+ wifiConfiguration, null, false, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList1 =
new ArrayList<WifiNetworkSuggestion>() {{
@@ -633,7 +633,7 @@
wifiConfiguration.BSSID = scanDetail.getBSSIDString();
WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(
- wifiConfiguration, null, false, false, true);
+ wifiConfiguration, null, false, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList1 =
new ArrayList<WifiNetworkSuggestion>() {{
add(networkSuggestion);
@@ -662,10 +662,10 @@
wifiConfiguration.BSSID = scanDetail.getBSSIDString();
WifiNetworkSuggestion networkSuggestion1 = new WifiNetworkSuggestion(
- wifiConfiguration, null, false, false, true);
+ wifiConfiguration, null, false, false, true, true);
// Reuse the same network credentials to ensure they both match.
WifiNetworkSuggestion networkSuggestion2 = new WifiNetworkSuggestion(
- wifiConfiguration, null, false, false, true);
+ wifiConfiguration, null, false, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList1 =
new ArrayList<WifiNetworkSuggestion>() {{
@@ -706,10 +706,10 @@
wifiConfiguration.BSSID = scanDetail.getBSSIDString();
WifiNetworkSuggestion networkSuggestion1 = new WifiNetworkSuggestion(
- wifiConfiguration, null, false, false, true);
+ wifiConfiguration, null, false, false, true, true);
// Reuse the same network credentials to ensure they both match.
WifiNetworkSuggestion networkSuggestion2 = new WifiNetworkSuggestion(
- wifiConfiguration, null, false, false, true);
+ wifiConfiguration, null, false, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList =
new ArrayList<WifiNetworkSuggestion>() {{
@@ -744,10 +744,10 @@
wifiConfiguration2.BSSID = scanDetail.getBSSIDString();
WifiNetworkSuggestion networkSuggestion1 = new WifiNetworkSuggestion(
- wifiConfiguration1, null, false, false, true);
+ wifiConfiguration1, null, false, false, true, true);
// Reuse the same network credentials to ensure they both match.
WifiNetworkSuggestion networkSuggestion2 = new WifiNetworkSuggestion(
- wifiConfiguration2, null, false, false, true);
+ wifiConfiguration2, null, false, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList1 =
new ArrayList<WifiNetworkSuggestion>() {{
@@ -795,7 +795,7 @@
@Test
public void testGetNetworkSuggestionsForScanDetailFailureOnAppNotApproved() {
WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList1 =
new ArrayList<WifiNetworkSuggestion>() {{
add(networkSuggestion);
@@ -817,7 +817,7 @@
public void testGetNetworkSuggestionsForScanDetailFailureOnSuggestionRemoval() {
WifiConfiguration wifiConfiguration = WifiConfigurationTestUtil.createOpenNetwork();
WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(
- wifiConfiguration, null, false, false, true);
+ wifiConfiguration, null, false, false, true, true);
ScanDetail scanDetail = createScanDetailForNetwork(wifiConfiguration);
List<WifiNetworkSuggestion> networkSuggestionList1 =
new ArrayList<WifiNetworkSuggestion>() {{
@@ -845,7 +845,7 @@
@Test
public void testGetNetworkSuggestionsForScanDetailFailureOnWrongNetwork() {
WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList1 =
new ArrayList<WifiNetworkSuggestion>() {{
add(networkSuggestion);
@@ -876,7 +876,7 @@
.registerSuggestionConnectionStatusListener(mBinder, mListener,
NETWORK_CALLBACK_ID, TEST_PACKAGE_1));
WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, true, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, true, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList =
new ArrayList<WifiNetworkSuggestion>() {{
add(networkSuggestion);
@@ -917,7 +917,7 @@
NETWORK_CALLBACK_ID, TEST_PACKAGE_1));
verify(mBinder).linkToDeath(drCaptor.capture(), anyInt());
WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, true, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, true, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList =
new ArrayList<WifiNetworkSuggestion>() {{
add(networkSuggestion);
@@ -966,7 +966,7 @@
.registerSuggestionConnectionStatusListener(mBinder, mListener,
NETWORK_CALLBACK_ID, TEST_PACKAGE_1));
WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, true, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, true, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList =
new ArrayList<WifiNetworkSuggestion>() {{
add(networkSuggestion);
@@ -1009,13 +1009,13 @@
public void testOnNetworkConnectionSuccessWithMultipleMatch() {
WifiConfiguration wifiConfiguration = WifiConfigurationTestUtil.createOpenNetwork();
WifiNetworkSuggestion networkSuggestion1 = new WifiNetworkSuggestion(
- wifiConfiguration, null, true, false, true);
+ wifiConfiguration, null, true, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList1 =
new ArrayList<WifiNetworkSuggestion>() {{
add(networkSuggestion1);
}};
WifiNetworkSuggestion networkSuggestion2 = new WifiNetworkSuggestion(
- wifiConfiguration, null, true, false, true);
+ wifiConfiguration, null, true, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList2 =
new ArrayList<WifiNetworkSuggestion>() {{
add(networkSuggestion2);
@@ -1070,13 +1070,13 @@
WifiConfiguration wifiConfiguration = WifiConfigurationTestUtil.createOpenNetwork();
wifiConfiguration.BSSID = TEST_BSSID;
WifiNetworkSuggestion networkSuggestion1 = new WifiNetworkSuggestion(
- wifiConfiguration, null, true, false, true);
+ wifiConfiguration, null, true, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList1 =
new ArrayList<WifiNetworkSuggestion>() {{
add(networkSuggestion1);
}};
WifiNetworkSuggestion networkSuggestion2 = new WifiNetworkSuggestion(
- wifiConfiguration, null, true, false, true);
+ wifiConfiguration, null, true, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList2 =
new ArrayList<WifiNetworkSuggestion>() {{
add(networkSuggestion2);
@@ -1131,13 +1131,13 @@
WifiConfiguration wifiConfiguration2 = new WifiConfiguration(wifiConfiguration1);
wifiConfiguration2.BSSID = TEST_BSSID;
WifiNetworkSuggestion networkSuggestion1 = new WifiNetworkSuggestion(
- wifiConfiguration1, null, true, false, true);
+ wifiConfiguration1, null, true, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList1 =
new ArrayList<WifiNetworkSuggestion>() {{
add(networkSuggestion1);
}};
WifiNetworkSuggestion networkSuggestion2 = new WifiNetworkSuggestion(
- wifiConfiguration2, null, true, false, true);
+ wifiConfiguration2, null, true, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList2 =
new ArrayList<WifiNetworkSuggestion>() {{
add(networkSuggestion2);
@@ -1192,7 +1192,7 @@
@Test
public void testOnNetworkConnectionWhenAppNotApproved() {
WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, true, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, true, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList =
new ArrayList<WifiNetworkSuggestion>() {{
add(networkSuggestion);
@@ -1232,7 +1232,7 @@
@Test
public void testOnNetworkConnectionWhenIsAppInteractionRequiredNotSet() {
WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList =
new ArrayList<WifiNetworkSuggestion>() {{
add(networkSuggestion);
@@ -1272,7 +1272,7 @@
@Test
public void testOnNetworkConnectionWhenAppDoesNotHoldLocationPermission() {
WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, true, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, true, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList =
new ArrayList<WifiNetworkSuggestion>() {{
add(networkSuggestion);
@@ -1311,7 +1311,7 @@
@Test
public void testAddNetworkSuggestionsConfigStoreWrite() {
WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList =
new ArrayList<WifiNetworkSuggestion>() {{
@@ -1352,7 +1352,7 @@
@Test
public void testRemoveNetworkSuggestionsConfigStoreWrite() {
WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList =
new ArrayList<WifiNetworkSuggestion>() {{
@@ -1395,13 +1395,13 @@
PerAppInfo appInfo = new PerAppInfo(TEST_UID_1, TEST_PACKAGE_1, TEST_FEATURE);
appInfo.hasUserApproved = true;
WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true, true);
WifiNetworkSuggestion networkSuggestion1 = new WifiNetworkSuggestion(
- dummyConfiguration, passpointConfiguration, false, false, true);
+ dummyConfiguration, passpointConfiguration, false, false, true, true);
appInfo.extNetworkSuggestions.add(
- ExtendedWifiNetworkSuggestion.fromWns(networkSuggestion, appInfo));
+ ExtendedWifiNetworkSuggestion.fromWns(networkSuggestion, appInfo, true));
appInfo.extNetworkSuggestions.add(
- ExtendedWifiNetworkSuggestion.fromWns(networkSuggestion1, appInfo));
+ ExtendedWifiNetworkSuggestion.fromWns(networkSuggestion1, appInfo, true));
mDataSource.fromDeserialized(new HashMap<String, PerAppInfo>() {{
put(TEST_PACKAGE_1, appInfo);
}});
@@ -1433,7 +1433,7 @@
.getNetworkSuggestionsForWifiConfiguration(connectNetwork, null);
Set<ExtendedWifiNetworkSuggestion> expectedMatchingExtNetworkSuggestions =
new HashSet<ExtendedWifiNetworkSuggestion>() {{
- add(ExtendedWifiNetworkSuggestion.fromWns(networkSuggestion1, appInfo));
+ add(ExtendedWifiNetworkSuggestion.fromWns(networkSuggestion1, appInfo, true));
}};
assertEquals(expectedMatchingExtNetworkSuggestions, matchingExtNetworkSuggestions);
}
@@ -1447,9 +1447,9 @@
PerAppInfo appInfo1 = new PerAppInfo(TEST_UID_1, TEST_PACKAGE_1, TEST_FEATURE);
appInfo1.hasUserApproved = true;
WifiNetworkSuggestion networkSuggestion1 = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true, true);
appInfo1.extNetworkSuggestions.add(
- ExtendedWifiNetworkSuggestion.fromWns(networkSuggestion1, appInfo1));
+ ExtendedWifiNetworkSuggestion.fromWns(networkSuggestion1, appInfo1, true));
mDataSource.fromDeserialized(new HashMap<String, PerAppInfo>() {{
put(TEST_PACKAGE_1, appInfo1);
}});
@@ -1460,9 +1460,9 @@
PerAppInfo appInfo2 = new PerAppInfo(TEST_UID_2, TEST_PACKAGE_2, TEST_FEATURE);
appInfo2.hasUserApproved = true;
WifiNetworkSuggestion networkSuggestion2 = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true, true);
appInfo2.extNetworkSuggestions.add(
- ExtendedWifiNetworkSuggestion.fromWns(networkSuggestion2, appInfo2));
+ ExtendedWifiNetworkSuggestion.fromWns(networkSuggestion2, appInfo2, true));
mDataSource.fromDeserialized(new HashMap<String, PerAppInfo>() {{
put(TEST_PACKAGE_2, appInfo2);
}});
@@ -1498,7 +1498,7 @@
public void
testRemoveNetworkSuggestionsMatchingConnectionSuccessWithOneMatch() {
WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList =
new ArrayList<WifiNetworkSuggestion>() {{
add(networkSuggestion);
@@ -1533,7 +1533,7 @@
public void
testRemoveAllNetworkSuggestionsMatchingConnectionSuccessWithOneMatch() {
WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList =
new ArrayList<WifiNetworkSuggestion>() {{
add(networkSuggestion);
@@ -1570,13 +1570,13 @@
public void testRemoveAppMatchingConnectionSuccessWithMultipleMatch() {
WifiConfiguration wifiConfiguration = WifiConfigurationTestUtil.createOpenNetwork();
WifiNetworkSuggestion networkSuggestion1 = new WifiNetworkSuggestion(
- wifiConfiguration, null, true, false, true);
+ wifiConfiguration, null, true, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList1 =
new ArrayList<WifiNetworkSuggestion>() {{
add(networkSuggestion1);
}};
WifiNetworkSuggestion networkSuggestion2 = new WifiNetworkSuggestion(
- wifiConfiguration, null, true, false, true);
+ wifiConfiguration, null, true, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList2 =
new ArrayList<WifiNetworkSuggestion>() {{
add(networkSuggestion2);
@@ -1618,7 +1618,7 @@
@Test
public void testRemoveAppNotMatchingConnectionSuccess() {
WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList =
new ArrayList<WifiNetworkSuggestion>() {{
add(networkSuggestion);
@@ -1645,7 +1645,7 @@
@Test
public void testRemoveNetworkSuggestionsNotMatchingConnectionSuccessAfterConnectionFailure() {
WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList =
new ArrayList<WifiNetworkSuggestion>() {{
add(networkSuggestion);
@@ -1681,9 +1681,9 @@
@Test
public void testAddRemoveNetworkSuggestionsStartStopAppOpsWatch() {
WifiNetworkSuggestion networkSuggestion1 = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true, true);
WifiNetworkSuggestion networkSuggestion2 = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList1 =
new ArrayList<WifiNetworkSuggestion>() {{
@@ -1728,7 +1728,7 @@
@Test
public void testAppOpsChangeAfterSuggestionsAdd() {
WifiNetworkSuggestion networkSuggestion1 = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList =
new ArrayList<WifiNetworkSuggestion>() {{
add(networkSuggestion1);
@@ -1779,9 +1779,9 @@
public void testAppOpsChangeAfterConfigStoreLoad() {
PerAppInfo appInfo = new PerAppInfo(TEST_UID_1, TEST_PACKAGE_1, TEST_FEATURE);
WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true, true);
appInfo.extNetworkSuggestions.add(
- ExtendedWifiNetworkSuggestion.fromWns(networkSuggestion, appInfo));
+ ExtendedWifiNetworkSuggestion.fromWns(networkSuggestion, appInfo, true));
mDataSource.fromDeserialized(new HashMap<String, PerAppInfo>() {{
put(TEST_PACKAGE_1, appInfo);
}});
@@ -1825,7 +1825,7 @@
@Test
public void testAppOpsChangeWrongUid() {
WifiNetworkSuggestion networkSuggestion1 = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList =
new ArrayList<WifiNetworkSuggestion>() {{
add(networkSuggestion1);
@@ -1867,9 +1867,9 @@
@Test
public void testRemoveApp() {
WifiNetworkSuggestion networkSuggestion1 = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true, true);
WifiNetworkSuggestion networkSuggestion2 = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList1 =
new ArrayList<WifiNetworkSuggestion>() {{
@@ -1931,9 +1931,9 @@
@Test
public void testClear() {
WifiNetworkSuggestion networkSuggestion1 = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true, true);
WifiNetworkSuggestion networkSuggestion2 = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList1 =
new ArrayList<WifiNetworkSuggestion>() {{
@@ -1986,7 +1986,7 @@
@Test
public void testUserApprovalNotificationDismissalWhenGetScanResult() {
WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, true, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, true, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList =
new ArrayList<WifiNetworkSuggestion>() {{
add(networkSuggestion);
@@ -2026,7 +2026,7 @@
@Test
public void testUserApprovalNotificationClickOnAllowWhenGetScanResult() {
WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, true, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, true, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList =
new ArrayList<WifiNetworkSuggestion>() {{
add(networkSuggestion);
@@ -2071,7 +2071,7 @@
@Test
public void testUserApprovalNotificationClickOnDisallowWhenGetScanResult() {
WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, true, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, true, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList =
new ArrayList<WifiNetworkSuggestion>() {{
add(networkSuggestion);
@@ -2139,7 +2139,7 @@
@Test
public void testUserApprovalNotificationWhilePreviousNotificationActive() {
WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, true, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, true, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList =
new ArrayList<WifiNetworkSuggestion>() {{
add(networkSuggestion);
@@ -2177,13 +2177,13 @@
// App add network suggestions then get stored suggestions.
WifiNetworkSuggestion networkSuggestion1 = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true, true);
WifiNetworkSuggestion networkSuggestion2 = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOweNetwork(), null, false, false, true);
+ WifiConfigurationTestUtil.createOweNetwork(), null, false, false, true, true);
WifiNetworkSuggestion networkSuggestion3 = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createSaeNetwork(), null, false, false, true);
+ WifiConfigurationTestUtil.createSaeNetwork(), null, false, false, true, true);
WifiNetworkSuggestion networkSuggestion4 = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createPskNetwork(), null, false, false, true);
+ WifiConfigurationTestUtil.createPskNetwork(), null, false, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList = new ArrayList<>();
networkSuggestionList.add(networkSuggestion1);
networkSuggestionList.add(networkSuggestion2);
@@ -2214,11 +2214,11 @@
public void testGetHiddenNetworks() {
WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, true, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, true, false, true, true);
WifiNetworkSuggestion hiddenNetworkSuggestion1 = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createPskHiddenNetwork(), null, true, false, true);
+ WifiConfigurationTestUtil.createPskHiddenNetwork(), null, true, false, true, true);
WifiNetworkSuggestion hiddenNetworkSuggestion2 = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createPskHiddenNetwork(), null, true, false, true);
+ WifiConfigurationTestUtil.createPskHiddenNetwork(), null, true, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList1 =
new ArrayList<WifiNetworkSuggestion>() {{
add(networkSuggestion);
@@ -2249,7 +2249,7 @@
@Test
public void testUserApprovalNotificationClickOnAllowDuringAddingSuggestions() {
WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, true, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, true, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList =
new ArrayList<WifiNetworkSuggestion>() {{
add(networkSuggestion);
@@ -2283,7 +2283,7 @@
@Test
public void testUserApprovalNotificationClickOnDisallowWhenAddSuggestions() {
WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, true, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, true, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList =
new ArrayList<WifiNetworkSuggestion>() {{
add(networkSuggestion);
@@ -2346,7 +2346,7 @@
WifiConfiguration dummyConfiguration = new WifiConfiguration();
dummyConfiguration.FQDN = TEST_FQDN;
WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(
- dummyConfiguration, passpointConfiguration, true, false, true);
+ dummyConfiguration, passpointConfiguration, true, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList =
new ArrayList<WifiNetworkSuggestion>() {{
add(networkSuggestion);
@@ -2444,7 +2444,7 @@
WifiConfiguration config = WifiConfigurationTestUtil.createOpenNetwork();
config.carrierId = VALID_CARRIER_ID;
WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(
- config, null, true, false, true);
+ config, null, true, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList = new ArrayList<>();
networkSuggestionList.add(networkSuggestion);
when(mWifiPermissionsUtil.checkNetworkCarrierProvisioningPermission(TEST_UID_1))
@@ -2462,7 +2462,7 @@
WifiConfiguration config = WifiConfigurationTestUtil.createOpenNetwork();
config.carrierId = VALID_CARRIER_ID;
WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(
- config, null, true, false, true);
+ config, null, true, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList = new ArrayList<>();
networkSuggestionList.add(networkSuggestion);
when(mWifiPermissionsUtil.checkNetworkCarrierProvisioningPermission(TEST_UID_1))
@@ -2479,7 +2479,7 @@
public void testAddSuggestionWithDefaultCarrierIdWithoutCarrierProvisionPermission() {
WifiConfiguration config = WifiConfigurationTestUtil.createOpenNetwork();
WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(
- config, null, true, false, true);
+ config, null, true, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList = new ArrayList<>();
networkSuggestionList.add(networkSuggestion);
when(mWifiPermissionsUtil.checkNetworkCarrierProvisioningPermission(TEST_UID_1))
@@ -2505,7 +2505,7 @@
WifiConfiguration dummyConfiguration = new WifiConfiguration();
dummyConfiguration.FQDN = TEST_FQDN;
WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(dummyConfiguration,
- passpointConfiguration, true, false, true);
+ passpointConfiguration, true, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList = new ArrayList<>();
networkSuggestionList.add(networkSuggestion);
when(mPasspointManager.addOrUpdateProvider(any(PasspointConfiguration.class),
@@ -2531,7 +2531,7 @@
WifiConfiguration dummyConfiguration = new WifiConfiguration();
dummyConfiguration.FQDN = TEST_FQDN;
WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(dummyConfiguration,
- passpointConfiguration, true, false, true);
+ passpointConfiguration, true, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList = new ArrayList<>();
networkSuggestionList.add(networkSuggestion);
dummyConfiguration.creatorUid = TEST_UID_1;
@@ -2556,7 +2556,7 @@
WifiConfiguration dummyConfiguration = new WifiConfiguration();
dummyConfiguration.FQDN = TEST_FQDN;
WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(dummyConfiguration,
- passpointConfiguration, true, false, true);
+ passpointConfiguration, true, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList = new ArrayList<>();
networkSuggestionList.add(networkSuggestion);
dummyConfiguration.creatorUid = TEST_UID_1;
@@ -2586,7 +2586,7 @@
WifiConfiguration dummyConfiguration = new WifiConfiguration();
dummyConfiguration.FQDN = TEST_FQDN;
WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(dummyConfiguration,
- passpointConfiguration, true, false, false);
+ passpointConfiguration, true, false, false, true);
List<WifiNetworkSuggestion> networkSuggestionList = new ArrayList<>();
networkSuggestionList.add(networkSuggestion);
when(mPasspointManager.addOrUpdateProvider(any(PasspointConfiguration.class),
@@ -2612,11 +2612,11 @@
@Test
public void testGetWifiConfigForMatchedNetworkSuggestionsSharedWithUser() {
WifiNetworkSuggestion networkSuggestion1 = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true);
+ WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true, true);
WifiNetworkSuggestion networkSuggestion2 = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createPskNetwork(), null, false, false, false);
+ WifiConfigurationTestUtil.createPskNetwork(), null, false, false, false, true);
WifiNetworkSuggestion networkSuggestion3 = new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createPskNetwork(), null, false, false, true);
+ WifiConfigurationTestUtil.createPskNetwork(), null, false, false, true, true);
List<ScanResult> scanResults = new ArrayList<>();
scanResults.add(
createScanDetailForNetwork(networkSuggestion1.wifiConfiguration).getScanResult());
@@ -2682,7 +2682,7 @@
WifiConfigurationTestUtil.createEapNetwork(WifiEnterpriseConfig.Eap.SIM,
WifiEnterpriseConfig.Phase2.NONE);
WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(
- config, null, true, false, true);
+ config, null, true, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList = new ArrayList<>();
networkSuggestionList.add(networkSuggestion);
when(mWifiPermissionsUtil.checkNetworkCarrierProvisioningPermission(TEST_UID_1))
@@ -2705,7 +2705,7 @@
WifiConfigurationTestUtil.createEapNetwork(WifiEnterpriseConfig.Eap.SIM,
WifiEnterpriseConfig.Phase2.NONE);
WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(
- config, null, true, false, true);
+ config, null, true, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList = new ArrayList<>();
networkSuggestionList.add(networkSuggestion);
when(mWifiPermissionsUtil.checkNetworkCarrierProvisioningPermission(TEST_UID_1))
@@ -2728,7 +2728,7 @@
WifiConfigurationTestUtil.createEapNetwork(WifiEnterpriseConfig.Eap.SIM,
WifiEnterpriseConfig.Phase2.NONE);
WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(
- config, null, true, false, true);
+ config, null, true, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList = new ArrayList<>();
networkSuggestionList.add(networkSuggestion);
when(mWifiPermissionsUtil.checkNetworkCarrierProvisioningPermission(TEST_UID_1))
@@ -2751,7 +2751,7 @@
WifiConfigurationTestUtil.createEapNetwork(WifiEnterpriseConfig.Eap.SIM,
WifiEnterpriseConfig.Phase2.NONE);
WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(
- config, null, true, false, true);
+ config, null, true, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList = new ArrayList<>();
networkSuggestionList.add(networkSuggestion);
when(mWifiPermissionsUtil.checkNetworkCarrierProvisioningPermission(TEST_UID_1))
@@ -2787,7 +2787,7 @@
WifiConfigurationTestUtil.createEapNetwork(WifiEnterpriseConfig.Eap.SIM,
WifiEnterpriseConfig.Phase2.NONE);
WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(
- config, null, true, false, true);
+ config, null, true, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList = new ArrayList<>();
networkSuggestionList.add(networkSuggestion);
when(mWifiPermissionsUtil.checkNetworkCarrierProvisioningPermission(TEST_UID_1))
@@ -2819,7 +2819,7 @@
WifiConfigurationTestUtil.createEapNetwork(WifiEnterpriseConfig.Eap.SIM,
WifiEnterpriseConfig.Phase2.NONE);
WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(
- config, null, true, false, true);
+ config, null, true, false, true, true);
List<WifiNetworkSuggestion> networkSuggestionList = new ArrayList<>();
networkSuggestionList.add(networkSuggestion);
when(mWifiPermissionsUtil.checkNetworkCarrierProvisioningPermission(TEST_UID_1))
@@ -2840,10 +2840,99 @@
assertEquals(WifiManager.STATUS_NETWORK_SUGGESTIONS_ERROR_APP_DISALLOWED, status);
networkSuggestionList.clear();
networkSuggestionList.add(new WifiNetworkSuggestion(
- WifiConfigurationTestUtil.createOpenNetwork(), null, true, false, true));
+ WifiConfigurationTestUtil.createOpenNetwork(), null, true, false, true, true));
status = mWifiNetworkSuggestionsManager
.add(networkSuggestionList, TEST_UID_1, TEST_PACKAGE_1, TEST_FEATURE);
assertEquals(WifiManager.STATUS_NETWORK_SUGGESTIONS_SUCCESS, status);
verify(mNotificationManger).notify(anyInt(), any());
}
+
+ /**
+ * Verify set AllowAutoJoin on suggestion network .
+ */
+ @Test
+ public void testSetAllowAutoJoinOnSuggestionNetwork() {
+ WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(
+ WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true, true);
+ List<WifiNetworkSuggestion> networkSuggestionList =
+ new ArrayList<WifiNetworkSuggestion>() {{
+ add(networkSuggestion);
+ }};
+ // No matching will return false.
+ assertFalse(mWifiNetworkSuggestionsManager
+ .allowNetworkSuggestionAutojoin(networkSuggestion.wifiConfiguration, false));
+ verify(mWifiConfigManager, never()).saveToStore(true);
+ assertEquals(WifiManager.STATUS_NETWORK_SUGGESTIONS_SUCCESS,
+ mWifiNetworkSuggestionsManager.add(networkSuggestionList, TEST_UID_1,
+ TEST_PACKAGE_1, TEST_FEATURE));
+ mWifiNetworkSuggestionsManager.setHasUserApprovedForApp(true, TEST_PACKAGE_1);
+ verify(mWifiConfigManager, times(2)).saveToStore(true);
+ reset(mWifiConfigManager);
+ WifiConfiguration configuration =
+ new WifiConfiguration(networkSuggestion.wifiConfiguration);
+ configuration.fromWifiNetworkSuggestion = true;
+ configuration.ephemeral = true;
+ configuration.creatorName = TEST_PACKAGE_1;
+ configuration.creatorUid = TEST_UID_1;
+
+ assertTrue(mWifiNetworkSuggestionsManager
+ .allowNetworkSuggestionAutojoin(configuration, false));
+ verify(mWifiConfigManager).saveToStore(true);
+ Set<ExtendedWifiNetworkSuggestion> matchedSuggestions = mWifiNetworkSuggestionsManager
+ .getNetworkSuggestionsForWifiConfiguration(configuration,
+ TEST_BSSID);
+ for (ExtendedWifiNetworkSuggestion ewns : matchedSuggestions) {
+ assertFalse(ewns.isAutoJoinEnabled);
+ }
+ }
+
+ /**
+ * Verify set AllowAutoJoin on passpoint suggestion network.
+ */
+ @Test
+ public void testSetAllowAutoJoinOnPasspointSuggestionNetwork() {
+ PasspointConfiguration passpointConfiguration = new PasspointConfiguration();
+ HomeSp homeSp = new HomeSp();
+ homeSp.setFqdn(TEST_FQDN);
+ passpointConfiguration.setHomeSp(homeSp);
+ WifiConfiguration dummyConfiguration = new WifiConfiguration();
+ dummyConfiguration.FQDN = TEST_FQDN;
+ WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(
+ dummyConfiguration, passpointConfiguration, false, false, true, true);
+ List<WifiNetworkSuggestion> networkSuggestionList =
+ new ArrayList<WifiNetworkSuggestion>() {{
+ add(networkSuggestion);
+ }};
+ when(mPasspointManager.addOrUpdateProvider(any(), anyInt(), anyString(), anyBoolean()))
+ .thenReturn(true);
+ assertEquals(WifiManager.STATUS_NETWORK_SUGGESTIONS_SUCCESS,
+ mWifiNetworkSuggestionsManager.add(networkSuggestionList, TEST_UID_1,
+ TEST_PACKAGE_1, TEST_FEATURE));
+ mWifiNetworkSuggestionsManager.setHasUserApprovedForApp(true, TEST_PACKAGE_1);
+ verify(mWifiConfigManager, times(2)).saveToStore(true);
+ reset(mWifiConfigManager);
+ // Create WifiConfiguration for Passpoint network.
+ WifiConfiguration config = WifiConfigurationTestUtil.createPasspointNetwork();
+ config.FQDN = TEST_FQDN;
+ config.fromWifiNetworkSuggestion = true;
+ config.ephemeral = true;
+ config.creatorName = TEST_PACKAGE_1;
+ config.creatorUid = TEST_UID_1;
+ // When update PasspointManager is failure, will return false.
+ when(mPasspointManager.enableAutojoin(anyString(), anyBoolean())).thenReturn(false);
+ assertFalse(mWifiNetworkSuggestionsManager
+ .allowNetworkSuggestionAutojoin(config, false));
+ verify(mWifiConfigManager, never()).saveToStore(true);
+
+ // When update PasspointManager is success, will return true and persist suggestion.
+ when(mPasspointManager.enableAutojoin(anyString(), anyBoolean())).thenReturn(true);
+ assertTrue(mWifiNetworkSuggestionsManager
+ .allowNetworkSuggestionAutojoin(config, false));
+ verify(mWifiConfigManager).saveToStore(true);
+ Set<ExtendedWifiNetworkSuggestion> matchedSuggestions = mWifiNetworkSuggestionsManager
+ .getNetworkSuggestionsForWifiConfiguration(config, TEST_BSSID);
+ for (ExtendedWifiNetworkSuggestion ewns : matchedSuggestions) {
+ assertFalse(ewns.isAutoJoinEnabled);
+ }
+ }
}
diff --git a/service/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java b/service/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java
index ff77118..afebe69 100644
--- a/service/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java
+++ b/service/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java
@@ -4697,6 +4697,61 @@
}
}
+ @Test
+ public void testAllowAutojoinOnSuggestionNetwork() {
+ WifiConfiguration config = new WifiConfiguration();
+ config.fromWifiNetworkSuggestion = true;
+ when(mWifiConfigManager.getConfiguredNetwork(anyInt())).thenReturn(config);
+ when(mWifiNetworkSuggestionsManager.allowNetworkSuggestionAutojoin(any(), anyBoolean()))
+ .thenReturn(true);
+ mWifiServiceImpl.allowAutojoin(0, true);
+ mLooper.dispatchAll();
+ verify(mWifiConfigManager).getConfiguredNetwork(0);
+ verify(mWifiNetworkSuggestionsManager).allowNetworkSuggestionAutojoin(any(), anyBoolean());
+ verify(mWifiConfigManager).allowAutojoin(anyInt(), anyBoolean());
+ }
+
+ @Test
+ public void testAllowAutojoinOnSavedNetwork() {
+ WifiConfiguration config = new WifiConfiguration();
+ config.fromWifiNetworkSuggestion = false;
+ config.fromWifiNetworkSpecifier = false;
+ when(mWifiConfigManager.getConfiguredNetwork(0)).thenReturn(config);
+ mWifiServiceImpl.allowAutojoin(0, true);
+ mLooper.dispatchAll();
+ verify(mWifiConfigManager).getConfiguredNetwork(0);
+ verify(mWifiNetworkSuggestionsManager, never())
+ .allowNetworkSuggestionAutojoin(any(), anyBoolean());
+ verify(mWifiConfigManager).allowAutojoin(anyInt(), anyBoolean());
+ }
+
+ @Test
+ public void testAllowAutojoinOnWifiNetworkSpecifier() {
+ WifiConfiguration config = new WifiConfiguration();
+ config.fromWifiNetworkSpecifier = true;
+ when(mWifiConfigManager.getConfiguredNetwork(0)).thenReturn(config);
+ mWifiServiceImpl.allowAutojoin(0, true);
+ mLooper.dispatchAll();
+ verify(mWifiConfigManager).getConfiguredNetwork(0);
+ verify(mWifiNetworkSuggestionsManager, never())
+ .allowNetworkSuggestionAutojoin(config, true);
+ verify(mWifiConfigManager, never()).allowAutojoin(0, true);
+ }
+
+ @Test
+ public void testAllowAutojoinOnSavedPasspointNetwork() {
+ WifiConfiguration config = WifiConfigurationTestUtil.createPasspointNetwork();
+ when(mWifiConfigManager.getConfiguredNetwork(0)).thenReturn(config);
+ when(mWifiNetworkSuggestionsManager.allowNetworkSuggestionAutojoin(any(), anyBoolean()))
+ .thenReturn(true);
+ mWifiServiceImpl.allowAutojoin(0, true);
+ mLooper.dispatchAll();
+ verify(mWifiConfigManager).getConfiguredNetwork(0);
+ verify(mWifiNetworkSuggestionsManager, never())
+ .allowNetworkSuggestionAutojoin(config, true);
+ verify(mWifiConfigManager, never()).allowAutojoin(0, true);
+ }
+
/**
* Test handle boot completed sequence.
*/