summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--service/java/com/android/server/wifi/ClientModeImpl.java1
-rw-r--r--service/java/com/android/server/wifi/NetworkSuggestionNominator.java30
-rw-r--r--service/java/com/android/server/wifi/SavedNetworkNominator.java5
-rw-r--r--service/java/com/android/server/wifi/ScoredNetworkNominator.java4
-rw-r--r--service/java/com/android/server/wifi/WifiConfigManager.java158
-rw-r--r--service/java/com/android/server/wifi/WifiConnectivityManager.java19
-rw-r--r--service/java/com/android/server/wifi/WifiNetworkFactory.java2
-rw-r--r--service/java/com/android/server/wifi/WifiServiceImpl.java8
-rw-r--r--service/java/com/android/server/wifi/WifiShellCommand.java8
-rw-r--r--service/java/com/android/server/wifi/hotspot2/PasspointNetworkNominateHelper.java11
-rw-r--r--tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java1
-rw-r--r--tests/wifitests/src/com/android/server/wifi/NetworkSuggestionNominatorTest.java26
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java85
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WifiConnectivityManagerTest.java39
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WifiNetworkFactoryTest.java2
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java6
-rw-r--r--tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointNetworkNominateHelperTest.java2
17 files changed, 256 insertions, 151 deletions
diff --git a/service/java/com/android/server/wifi/ClientModeImpl.java b/service/java/com/android/server/wifi/ClientModeImpl.java
index 01492f939..3b0bd6af0 100644
--- a/service/java/com/android/server/wifi/ClientModeImpl.java
+++ b/service/java/com/android/server/wifi/ClientModeImpl.java
@@ -6025,6 +6025,7 @@ public class ClientModeImpl extends StateMachine {
result = new NetworkUpdateResult(netId);
}
final int networkId = result.getNetworkId();
+ mWifiConfigManager.userEnabledNetwork(networkId);
if (!mWifiConfigManager.enableNetwork(networkId, true, callingUid, null)
|| !mWifiConfigManager.updateLastConnectUid(networkId, callingUid)) {
logi("connect Allowing uid " + callingUid
diff --git a/service/java/com/android/server/wifi/NetworkSuggestionNominator.java b/service/java/com/android/server/wifi/NetworkSuggestionNominator.java
index bc5873484..4f34b1aee 100644
--- a/service/java/com/android/server/wifi/NetworkSuggestionNominator.java
+++ b/service/java/com/android/server/wifi/NetworkSuggestionNominator.java
@@ -24,7 +24,6 @@ import android.util.Pair;
import com.android.server.wifi.WifiNetworkSuggestionsManager.ExtendedWifiNetworkSuggestion;
import com.android.server.wifi.hotspot2.PasspointNetworkNominateHelper;
-import com.android.server.wifi.util.ScanResultUtil;
import com.android.server.wifi.util.TelephonyUtil;
import java.util.ArrayList;
@@ -77,18 +76,14 @@ public class NetworkSuggestionNominator implements WifiNetworkSelector.NetworkNo
WifiConfiguration currentNetwork, String currentBssid, boolean connected,
boolean untrustedNetworkAllowed,
@NonNull OnConnectableListener onConnectableListener) {
+ if (scanDetails.isEmpty()) {
+ return;
+ }
MatchMetaInfo matchMetaInfo = new MatchMetaInfo();
Set<ExtendedWifiNetworkSuggestion> autoJoinDisabledSuggestions = new HashSet<>();
- List<ScanDetail> filteredScanDetails = scanDetails.stream().filter(scanDetail ->
- !mWifiConfigManager.wasEphemeralNetworkDeleted(
- ScanResultUtil.createQuotedSSID(scanDetail.getScanResult().SSID)))
- .collect(Collectors.toList());
- if (filteredScanDetails.isEmpty()) {
- return;
- }
- findMatchedPasspointSuggestionNetworks(filteredScanDetails, matchMetaInfo);
- findMatchedSuggestionNetworks(filteredScanDetails, matchMetaInfo,
+ findMatchedPasspointSuggestionNetworks(scanDetails, matchMetaInfo);
+ findMatchedSuggestionNetworks(scanDetails, matchMetaInfo,
autoJoinDisabledSuggestions);
if (matchMetaInfo.isEmpty()) {
@@ -139,12 +134,19 @@ public class NetworkSuggestionNominator implements WifiNetworkSelector.NetworkNo
}
Set<ExtendedWifiNetworkSuggestion> autojoinEnableSuggestions = new HashSet<>();
for (ExtendedWifiNetworkSuggestion ewns : matchingExtNetworkSuggestions) {
- if (ewns.isAutojoinEnabled
- && isSimBasedNetworkAvailableToAutoConnect(ewns.wns.wifiConfiguration)) {
- autojoinEnableSuggestions.add(ewns);
- } else {
+ if (!ewns.isAutojoinEnabled
+ || !isSimBasedNetworkAvailableToAutoConnect(ewns.wns.wifiConfiguration)) {
autoJoinDisabledSuggestions.add(ewns);
+ continue;
+ }
+ if (mWifiConfigManager
+ .isNetworkTemporarilyDisabledByUser(ewns.wns.wifiConfiguration.SSID)) {
+ mLocalLog.log("Ignoring user disabled SSID: "
+ + ewns.wns.wifiConfiguration.SSID);
+ autoJoinDisabledSuggestions.add(ewns);
+ continue;
}
+ autojoinEnableSuggestions.add(ewns);
}
if (autojoinEnableSuggestions.isEmpty()) {
diff --git a/service/java/com/android/server/wifi/SavedNetworkNominator.java b/service/java/com/android/server/wifi/SavedNetworkNominator.java
index fdfa8914c..d263b2f90 100644
--- a/service/java/com/android/server/wifi/SavedNetworkNominator.java
+++ b/service/java/com/android/server/wifi/SavedNetworkNominator.java
@@ -121,6 +121,11 @@ public class SavedNetworkNominator implements WifiNetworkSelector.NetworkNominat
// TODO (b/112196799): another side effect
status.setSeenInLastQualifiedNetworkSelection(true);
+ if (mWifiConfigManager.isNetworkTemporarilyDisabledByUser(network.SSID)) {
+ mLocalLog.log("Ignoring user disabled SSID: " + network.SSID);
+ continue;
+ }
+
if (!status.isNetworkEnabled()) {
continue;
} else if (network.BSSID != null && !network.BSSID.equals("any")
diff --git a/service/java/com/android/server/wifi/ScoredNetworkNominator.java b/service/java/com/android/server/wifi/ScoredNetworkNominator.java
index 0f71e7f01..4999ef102 100644
--- a/service/java/com/android/server/wifi/ScoredNetworkNominator.java
+++ b/service/java/com/android/server/wifi/ScoredNetworkNominator.java
@@ -131,9 +131,9 @@ public class ScoredNetworkNominator implements WifiNetworkSelector.NetworkNomina
ScanDetail scanDetail = scanDetails.get(i);
ScanResult scanResult = scanDetail.getScanResult();
if (scanResult == null) continue;
- if (mWifiConfigManager.wasEphemeralNetworkDeleted(
+ if (mWifiConfigManager.isNetworkTemporarilyDisabledByUser(
ScanResultUtil.createQuotedSSID(scanResult.SSID))) {
- debugLog("Ignoring disabled ephemeral SSID: " + scanResult.SSID);
+ debugLog("Ignoring user disabled SSID: " + scanResult.SSID);
continue;
}
final WifiConfiguration configuredNetwork =
diff --git a/service/java/com/android/server/wifi/WifiConfigManager.java b/service/java/com/android/server/wifi/WifiConfigManager.java
index a40298391..73a773e25 100644
--- a/service/java/com/android/server/wifi/WifiConfigManager.java
+++ b/service/java/com/android/server/wifi/WifiConfigManager.java
@@ -52,6 +52,7 @@ import android.util.Pair;
import com.android.internal.annotations.VisibleForTesting;
import com.android.server.wifi.hotspot2.PasspointManager;
+import com.android.server.wifi.util.MissingCounterTimerLockList;
import com.android.server.wifi.util.TelephonyUtil;
import com.android.server.wifi.util.WifiPermissionsUtil;
import com.android.server.wifi.util.WifiPermissionsWrapper;
@@ -186,10 +187,13 @@ public class WifiConfigManager {
MacAddress.fromString(WifiInfo.DEFAULT_MAC_ADDRESS);
/**
- * Expiration timeout for deleted ephemeral ssids. (1 day)
+ * Expiration timeout for user disconnect network. (1 hour)
*/
@VisibleForTesting
- public static final long DELETED_EPHEMERAL_SSID_EXPIRY_MS = (long) 1000 * 60 * 60 * 24;
+ public static final long USER_DISCONNECT_NETWORK_BLOCK_EXPIRY_MS = (long) 1000 * 60 * 60;
+
+ @VisibleForTesting
+ public static final int SCAN_RESULT_MISSING_COUNT_THRESHOLD = 1;
/**
* General sorting algorithm of all networks for scanning purposes:
@@ -244,14 +248,14 @@ public class WifiConfigManager {
*/
private final Map<Integer, ScanDetailCache> mScanDetailCaches;
/**
- * Framework keeps a list of ephemeral SSIDs that where deleted by user,
+ * Framework keeps a list of networks that where temporarily disabled by user,
* framework knows not to autoconnect again even if the app/scorer recommends it.
- * The entries are deleted after 24 hours.
- * The SSIDs are encoded in a String as per definition of WifiConfiguration.SSID field.
- *
- * The map stores the SSID and the wall clock time when the network was deleted.
+ * Network will be based on FQDN for passpoint and SSID for non-passpoint.
+ * List will be deleted when Wifi turn off, device restart or network settings reset.
+ * Also when user manfully select to connect network will unblock that network.
*/
- private final Map<String, Long> mDeletedEphemeralSsidsToTimeMap;
+ private final MissingCounterTimerLockList<String> mUserTemporarilyDisabledList;
+
/**
* Framework keeps a mapping from configKey to the randomized MAC address so that
@@ -342,7 +346,8 @@ public class WifiConfigManager {
mConfiguredNetworks = new ConfigurationMap(userManager);
mScanDetailCaches = new HashMap<>(16, 0.75f);
- mDeletedEphemeralSsidsToTimeMap = new HashMap<>();
+ mUserTemporarilyDisabledList =
+ new MissingCounterTimerLockList<>(SCAN_RESULT_MISSING_COUNT_THRESHOLD, mClock);
mRandomizedMacAddressMapping = new HashMap<>();
mListeners = new ArrayList<>();
@@ -1253,13 +1258,9 @@ public class WifiConfigManager {
Log.e(TAG, "Failed to add network to config map", e);
return new NetworkUpdateResult(WifiConfiguration.INVALID_NETWORK_ID);
}
-
- if (mDeletedEphemeralSsidsToTimeMap.remove(config.SSID) != null) {
- updateNetworkSelectionStatus(
- newInternalConfig, NetworkSelectionStatus.DISABLED_NONE);
- if (mVerboseLoggingEnabled) {
- Log.v(TAG, "Removed from ephemeral blacklist: " + config.SSID);
- }
+ // Add or update user saved network or saved passpoint network will re-enable network.
+ if (!newInternalConfig.fromWifiNetworkSuggestion) {
+ userEnabledNetwork(newInternalConfig.networkId);
}
// Stage the backup of the SettingsProvider package which backs this up.
@@ -2771,86 +2772,87 @@ public class WifiConfigManager {
return hiddenList;
}
- private @Nullable WifiConfiguration getInternalEphemeralConfiguredNetwork(
- @NonNull String ssid) {
- for (WifiConfiguration config : getInternalConfiguredNetworks()) {
- if ((config.ephemeral || config.isPasspoint()) && TextUtils.equals(config.SSID, ssid)) {
- return config;
- }
+ /**
+ * Check if the provided network was temporarily disabled by the user and still blocked.
+ *
+ * @param network Input can be SSID or FQDN. And caller must ensure that the SSID passed thru
+ * this API matched the WifiConfiguration.SSID rules, and thus be surrounded by
+ * quotes.
+ * @return true if network is blocking, otherwise false.
+ */
+ public boolean isNetworkTemporarilyDisabledByUser(String network) {
+ if (mUserTemporarilyDisabledList.isLocked(network)) {
+ return true;
}
- return null;
+ mUserTemporarilyDisabledList.remove(network);
+ return false;
}
/**
- * Check if the provided ephemeral network was deleted by the user or not. This call also clears
- * the SSID from the deleted ephemeral network map, if the duration has expired the
- * timeout specified by {@link #DELETED_EPHEMERAL_SSID_EXPIRY_MS}.
+ * User temporarily disable a network and will be block to auto-join when network is still
+ * nearby.
+ *
+ * The network will be re-enabled when:
+ * a) User select to connect the network.
+ * b) The network is not in range for {@link #USER_DISCONNECT_NETWORK_BLOCK_EXPIRY_MS}
+ * c) Toggle wifi off, reset network settings or device reboot.
*
- * @param ssid caller must ensure that the SSID passed thru this API match
- * the WifiConfiguration.SSID rules, and thus be surrounded by quotes.
- * @return true if network was deleted, false otherwise.
+ * @param network Input can be SSID or FQDN. And caller must ensure that the SSID passed thru
+ * this API matched the WifiConfiguration.SSID rules, and thus be surrounded by
+ * quotes.
*/
- public boolean wasEphemeralNetworkDeleted(String ssid) {
- if (!mDeletedEphemeralSsidsToTimeMap.containsKey(ssid)) {
- return false;
- }
- long deletedTimeInMs = mDeletedEphemeralSsidsToTimeMap.get(ssid);
- long nowInMs = mClock.getWallClockMillis();
- // Clear the ssid from the map if the age > |DELETED_EPHEMERAL_SSID_EXPIRY_MS|.
- if (nowInMs - deletedTimeInMs > DELETED_EPHEMERAL_SSID_EXPIRY_MS) {
- mDeletedEphemeralSsidsToTimeMap.remove(ssid);
- WifiConfiguration foundConfig = getInternalEphemeralConfiguredNetwork(ssid);
- if (foundConfig != null) {
- updateNetworkSelectionStatus(
- foundConfig, NetworkSelectionStatus.DISABLED_NONE);
+ public void userTemporarilyDisabledNetwork(String network) {
+ mUserTemporarilyDisabledList.add(network, USER_DISCONNECT_NETWORK_BLOCK_EXPIRY_MS);
+ Log.d(TAG, "Temporarily disable network: " + network + " num="
+ + mUserTemporarilyDisabledList.size());
+ removeUserChoiceFromDisabledNetwork(network);
+ }
+
+ /**
+ * Update the user temporarily disabled network list with networks in range.
+ * @param networks networks in range in String format, FQDN or SSID. And caller must ensure
+ * that the SSID passed thru this API matched the WifiConfiguration.SSID rules,
+ * and thus be surrounded by quotes.
+ */
+ public void updateUserDisabledList(List<String> networks) {
+ mUserTemporarilyDisabledList.update(new HashSet<>(networks));
+ }
+
+ private void removeUserChoiceFromDisabledNetwork(
+ @NonNull String network) {
+ for (WifiConfiguration config : getInternalConfiguredNetworks()) {
+ if (TextUtils.equals(config.SSID, network) || TextUtils.equals(config.FQDN, network)) {
+ removeConnectChoiceFromAllNetworks(config.getKey());
}
- return false;
}
- return true;
}
/**
- * Disable an ephemeral or Passpoint SSID for the purpose of network selection.
- *
- * The network will be re-enabled when:
- * a) The user creates a network for that SSID and then forgets.
- * b) The time specified by {@link #DELETED_EPHEMERAL_SSID_EXPIRY_MS} expires after the disable.
- *
- * @param ssid caller must ensure that the SSID passed thru this API match
- * the WifiConfiguration.SSID rules, and thus be surrounded by quotes.
- * @return the {@link WifiConfiguration} corresponding to this SSID, if any, so that we can
- * disconnect if this is the current network.
+ * User enabled network manually, maybe trigger by user select to connect network.
+ * @param networkId enabled network id.
*/
- public WifiConfiguration disableEphemeralNetwork(String ssid) {
- if (ssid == null) {
- return null;
+ public void userEnabledNetwork(int networkId) {
+ WifiConfiguration configuration = getInternalConfiguredNetwork(networkId);
+ if (configuration == null) {
+ return;
}
- WifiConfiguration foundConfig = getInternalEphemeralConfiguredNetwork(ssid);
- if (foundConfig == null) return null;
- // Store the ssid & the wall clock time at which the network was disabled.
- mDeletedEphemeralSsidsToTimeMap.put(ssid, mClock.getWallClockMillis());
- // Also, mark the ephemeral permanently blacklisted. Will be taken out of blacklist
- // when the ssid is taken out of |mDeletedEphemeralSsidsToTimeMap|.
- updateNetworkSelectionStatus(foundConfig, NetworkSelectionStatus.DISABLED_BY_WIFI_MANAGER);
- Log.d(TAG, "Forget ephemeral SSID " + ssid + " num="
- + mDeletedEphemeralSsidsToTimeMap.size());
- if (foundConfig.ephemeral) {
- Log.d(TAG, "Found ephemeral config in disableEphemeralNetwork: "
- + foundConfig.networkId);
- } else if (foundConfig.isPasspoint()) {
- Log.d(TAG, "Found Passpoint config in disableEphemeralNetwork: "
- + foundConfig.networkId + ", FQDN: " + foundConfig.FQDN);
+ String network;
+ if (configuration.isPasspoint()) {
+ network = configuration.FQDN;
+ } else {
+ network = configuration.SSID;
}
- removeConnectChoiceFromAllNetworks(foundConfig.getKey());
- return foundConfig;
+ mUserTemporarilyDisabledList.remove(network);
+ Log.d(TAG, "Enable disabled network: " + network + " num="
+ + mUserTemporarilyDisabledList.size());
}
/**
* Clear all deleted ephemeral networks.
*/
@VisibleForTesting
- public void clearDeletedEphemeralNetworks() {
- mDeletedEphemeralSsidsToTimeMap.clear();
+ public void clearUserTemporarilyDisabledList() {
+ mUserTemporarilyDisabledList.clear();
}
/**
@@ -3015,7 +3017,7 @@ public class WifiConfigManager {
private void clearInternalData() {
localLog("clearInternalData: Clearing all internal data");
mConfiguredNetworks.clear();
- mDeletedEphemeralSsidsToTimeMap.clear();
+ mUserTemporarilyDisabledList.clear();
mRandomizedMacAddressMapping.clear();
mScanDetailCaches.clear();
clearLastSelectedNetwork();
@@ -3044,7 +3046,7 @@ public class WifiConfigManager {
mConfiguredNetworks.remove(config.networkId);
}
}
- mDeletedEphemeralSsidsToTimeMap.clear();
+ mUserTemporarilyDisabledList.clear();
mScanDetailCaches.clear();
clearLastSelectedNetwork();
return removedNetworkIds;
diff --git a/service/java/com/android/server/wifi/WifiConnectivityManager.java b/service/java/com/android/server/wifi/WifiConnectivityManager.java
index e04897f92..415e29df2 100644
--- a/service/java/com/android/server/wifi/WifiConnectivityManager.java
+++ b/service/java/com/android/server/wifi/WifiConnectivityManager.java
@@ -288,6 +288,8 @@ public class WifiConnectivityManager {
mWifiChannelUtilization.refreshChannelStatsAndChannelUtilization(
mStateMachine.getWifiLinkLayerStats(), WifiChannelUtilization.UNKNOWN_FREQ);
+ updateUserDisabledList(scanDetails);
+
// Check if any blocklisted BSSIDs can be freed.
Set<String> bssidBlocklist = mBssidBlocklistMonitor.updateAndGetBssidBlocklist();
@@ -381,6 +383,23 @@ public class WifiConnectivityManager {
return null;
}
+ private void updateUserDisabledList(List<ScanDetail> scanDetails) {
+ List<String> results = new ArrayList<>();
+ List<ScanResult> passpointAp = new ArrayList<>();
+ for (ScanDetail scanDetail : scanDetails) {
+ results.add(ScanResultUtil.createQuotedSSID(scanDetail.getScanResult().SSID));
+ if (!scanDetail.getScanResult().isPasspointNetwork()) {
+ continue;
+ }
+ passpointAp.add(scanDetail.getScanResult());
+ }
+ if (!passpointAp.isEmpty()) {
+ results.addAll(new ArrayList<>(mWifiInjector.getPasspointManager()
+ .getAllMatchingPasspointProfilesForScanResults(passpointAp).keySet()));
+ }
+ mConfigManager.updateUserDisabledList(results);
+ }
+
/**
* Set whether bluetooth is in the connected state
*/
diff --git a/service/java/com/android/server/wifi/WifiNetworkFactory.java b/service/java/com/android/server/wifi/WifiNetworkFactory.java
index fcea03754..7352e8d0a 100644
--- a/service/java/com/android/server/wifi/WifiNetworkFactory.java
+++ b/service/java/com/android/server/wifi/WifiNetworkFactory.java
@@ -1391,7 +1391,7 @@ public class WifiNetworkFactory extends NetworkFactory {
findUserApprovedAccessPointForActiveRequestFromActiveMatchedScanResults();
}
if (approvedScanResult != null
- && !mWifiConfigManager.wasEphemeralNetworkDeleted(
+ && !mWifiConfigManager.isNetworkTemporarilyDisabledByUser(
ScanResultUtil.createQuotedSSID(approvedScanResult.SSID))) {
Log.v(TAG, "Approved access point found in matching scan results. "
+ "Triggering connect " + approvedScanResult);
diff --git a/service/java/com/android/server/wifi/WifiServiceImpl.java b/service/java/com/android/server/wifi/WifiServiceImpl.java
index 5b84c38a6..5c384f595 100644
--- a/service/java/com/android/server/wifi/WifiServiceImpl.java
+++ b/service/java/com/android/server/wifi/WifiServiceImpl.java
@@ -3011,10 +3011,10 @@ public class WifiServiceImpl extends BaseWifiService {
}
/**
- * Disable an ephemeral network, i.e. network that is created thru a WiFi Scorer
+ * Temporarily disable a network, should be trigger when user disconnect a network
*/
@Override
- public void disableEphemeralNetwork(String SSID, String packageName) {
+ public void disableEphemeralNetwork(String network, String packageName) {
mContext.enforceCallingOrSelfPermission(android.Manifest.permission.CHANGE_WIFI_STATE,
"WifiService");
if (!isPrivileged(Binder.getCallingPid(), Binder.getCallingUid())) {
@@ -3023,7 +3023,7 @@ public class WifiServiceImpl extends BaseWifiService {
return;
}
mLog.info("disableEphemeralNetwork uid=%").c(Binder.getCallingUid()).flush();
- mWifiThreadRunner.post(() -> mWifiConfigManager.disableEphemeralNetwork(SSID));
+ mWifiThreadRunner.post(() -> mWifiConfigManager.userTemporarilyDisabledNetwork(network));
}
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@@ -3377,7 +3377,7 @@ public class WifiServiceImpl extends BaseWifiService {
}
mWifiThreadRunner.post(() -> {
mPasspointManager.clearAnqpRequestsAndFlushCache();
- mWifiConfigManager.clearDeletedEphemeralNetworks();
+ mWifiConfigManager.clearUserTemporarilyDisabledList();
mWifiConfigManager.removeAllEphemeralOrPasspointConfiguredNetworks();
mClientModeImpl.clearNetworkRequestUserApprovedAccessPoints();
mWifiNetworkSuggestionsManager.clear();
diff --git a/service/java/com/android/server/wifi/WifiShellCommand.java b/service/java/com/android/server/wifi/WifiShellCommand.java
index 4dba42c80..b5198ddf9 100644
--- a/service/java/com/android/server/wifi/WifiShellCommand.java
+++ b/service/java/com/android/server/wifi/WifiShellCommand.java
@@ -247,8 +247,8 @@ public class WifiShellCommand extends BasicShellCommandHandler {
mClientModeImpl.removeNetworkRequestUserApprovedAccessPointsForApp(packageName);
return 0;
}
- case "clear-deleted-ephemeral-networks": {
- mWifiConfigManager.clearDeletedEphemeralNetworks();
+ case "clear-user-disabled-networks": {
+ mWifiConfigManager.clearUserTemporarilyDisabledList();
return 0;
}
case "send-link-probe": {
@@ -475,8 +475,8 @@ public class WifiShellCommand extends BasicShellCommandHandler {
pw.println(" Clear the user choice on Imsi protection exemption for carrier");
pw.println(" network-requests-remove-user-approved-access-points <package name>");
pw.println(" Removes all user approved network requests for the app.");
- pw.println(" clear-deleted-ephemeral-networks");
- pw.println(" Clears the deleted ephemeral networks list.");
+ pw.println(" clear-user-disabled-networks");
+ pw.println(" Clears the user disabled networks list.");
pw.println(" send-link-probe");
pw.println(" Manually triggers a link probe.");
pw.println(" force-softap-channel enabled <int> | disabled");
diff --git a/service/java/com/android/server/wifi/hotspot2/PasspointNetworkNominateHelper.java b/service/java/com/android/server/wifi/hotspot2/PasspointNetworkNominateHelper.java
index ca9a52fcb..27c8331ec 100644
--- a/service/java/com/android/server/wifi/hotspot2/PasspointNetworkNominateHelper.java
+++ b/service/java/com/android/server/wifi/hotspot2/PasspointNetworkNominateHelper.java
@@ -94,13 +94,6 @@ public class PasspointNetworkNominateHelper {
+ WifiNetworkSelector.toScanId(scanDetail.getScanResult()));
continue;
}
- if (mWifiConfigManager.wasEphemeralNetworkDeleted(
- ScanResultUtil.createQuotedSSID(scanDetail.getScanResult().SSID))) {
- // If the user previously disconnects this network, don't select it.
- mLocalLog.log("Ignoring disabled the SSID of Passpoint AP: "
- + WifiNetworkSelector.toScanId(scanDetail.getScanResult()));
- continue;
- }
filteredScanDetails.add(scanDetail);
}
@@ -170,6 +163,10 @@ public class PasspointNetworkNominateHelper {
if (config == null) {
continue;
}
+ if (mWifiConfigManager.isNetworkTemporarilyDisabledByUser(config.FQDN)) {
+ mLocalLog.log("Ignoring user disabled FQDN: " + config.FQDN);
+ continue;
+ }
results.add(Pair.create(candidate.mScanDetail, config));
}
}
diff --git a/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java b/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java
index 846b452d1..2e276e82a 100644
--- a/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java
@@ -893,6 +893,7 @@ public class ClientModeImplTest extends WifiBaseTest {
mCmi.connect(null, config.networkId, mock(Binder.class), connectActionListener, 0,
Binder.getCallingUid());
mLooper.dispatchAll();
+ verify(mWifiConfigManager).userEnabledNetwork(config.networkId);
verify(connectActionListener).onSuccess();
}
diff --git a/tests/wifitests/src/com/android/server/wifi/NetworkSuggestionNominatorTest.java b/tests/wifitests/src/com/android/server/wifi/NetworkSuggestionNominatorTest.java
index 1ce8d6eae..82925a43f 100644
--- a/tests/wifitests/src/com/android/server/wifi/NetworkSuggestionNominatorTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/NetworkSuggestionNominatorTest.java
@@ -408,8 +408,8 @@ public class NetworkSuggestionNominatorTest extends WifiBaseTest {
assertTrue(connectableNetworks.isEmpty());
- verify(mWifiConfigManager, times(scanSsids.length))
- .wasEphemeralNetworkDeleted(anyString());
+ verify(mWifiConfigManager, times(suggestionSsids.length))
+ .isNetworkTemporarilyDisabledByUser(anyString());
verify(mWifiConfigManager).getConfiguredNetwork(eq(
suggestions[0].wns.wifiConfiguration.getKey()));
verify(mWifiConfigManager).addOrUpdateNetwork(any(), anyInt(), anyString());
@@ -466,8 +466,8 @@ public class NetworkSuggestionNominatorTest extends WifiBaseTest {
validateConnectableNetworks(connectableNetworks, new String[] {scanSsids[0]});
// check for any saved networks.
- verify(mWifiConfigManager, times(scanSsids.length))
- .wasEphemeralNetworkDeleted(anyString());
+ verify(mWifiConfigManager, times(suggestionSsids.length))
+ .isNetworkTemporarilyDisabledByUser(anyString());
verify(mWifiConfigManager)
.getConfiguredNetwork(suggestions[0].wns.wifiConfiguration.getKey());
verify(mWifiConfigManager).addOrUpdateNetwork(
@@ -513,7 +513,8 @@ public class NetworkSuggestionNominatorTest extends WifiBaseTest {
// setup config manager interactions.
setupAddToWifiConfigManager(suggestions[0].wns.wifiConfiguration);
// Network was disabled by the user.
- when(mWifiConfigManager.wasEphemeralNetworkDeleted(suggestionSsids[0])).thenReturn(true);
+ when(mWifiConfigManager.isNetworkTemporarilyDisabledByUser(suggestionSsids[0]))
+ .thenReturn(true);
List<Pair<ScanDetail, WifiConfiguration>> connectableNetworks = new ArrayList<>();
mNetworkSuggestionNominator.nominateNetworks(
@@ -523,10 +524,11 @@ public class NetworkSuggestionNominatorTest extends WifiBaseTest {
assertTrue(connectableNetworks.isEmpty());
- verify(mWifiConfigManager, times(scanSsids.length)).wasEphemeralNetworkDeleted(anyString());
- // Verify we did not try to add any new networks or other interactions with
+ verify(mWifiConfigManager, times(suggestionSsids.length))
+ .isNetworkTemporarilyDisabledByUser(anyString());
+ // Verify we did try to add any new networks or other interactions with
// WifiConfigManager.
- verifyNoMoreInteractions(mWifiConfigManager);
+ verifyAddToWifiConfigManager(suggestions[0].wns.wifiConfiguration);
}
/**
@@ -580,8 +582,8 @@ public class NetworkSuggestionNominatorTest extends WifiBaseTest {
assertTrue(connectableNetworks.isEmpty());
- verify(mWifiConfigManager, times(scanSsids.length))
- .wasEphemeralNetworkDeleted(anyString());
+ verify(mWifiConfigManager, times(suggestionSsids.length))
+ .isNetworkTemporarilyDisabledByUser(anyString());
verify(mWifiConfigManager).getConfiguredNetwork(eq(
suggestions[0].wns.wifiConfiguration.getKey()));
verify(mWifiConfigManager).addOrUpdateNetwork(
@@ -649,8 +651,8 @@ public class NetworkSuggestionNominatorTest extends WifiBaseTest {
validateConnectableNetworks(connectableNetworks, new String[] {scanSsids[0]});
- verify(mWifiConfigManager, times(scanSsids.length))
- .wasEphemeralNetworkDeleted(anyString());
+ verify(mWifiConfigManager, times(suggestionSsids.length))
+ .isNetworkTemporarilyDisabledByUser(anyString());
verify(mWifiConfigManager).getConfiguredNetwork(eq(
suggestions[0].wns.wifiConfiguration.getKey()));
verify(mWifiConfigManager).addOrUpdateNetwork(
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java b/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java
index 08c4eac9a..6e5147bd3 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java
@@ -2964,7 +2964,7 @@ public class WifiConfigManagerTest extends WifiBaseTest {
}
assertTrue(sharedNetwork1Id != WifiConfiguration.INVALID_NETWORK_ID);
assertTrue(sharedNetwork2Id != WifiConfiguration.INVALID_NETWORK_ID);
- assertFalse(mWifiConfigManager.wasEphemeralNetworkDeleted(TEST_SSID));
+ assertFalse(mWifiConfigManager.isNetworkTemporarilyDisabledByUser(TEST_SSID));
// Set up the user 2 store data that is loaded at user switch.
List<WifiConfiguration> user2Networks = new ArrayList<WifiConfiguration>() {
@@ -2992,7 +2992,7 @@ public class WifiConfigManagerTest extends WifiBaseTest {
}
assertEquals(sharedNetwork1Id, updatedSharedNetwork1Id);
assertEquals(sharedNetwork2Id, updatedSharedNetwork2Id);
- assertFalse(mWifiConfigManager.wasEphemeralNetworkDeleted(TEST_SSID));
+ assertFalse(mWifiConfigManager.isNetworkTemporarilyDisabledByUser(TEST_SSID));
}
/**
@@ -4572,27 +4572,25 @@ public class WifiConfigManagerTest extends WifiBaseTest {
/**
* Verifies the deletion of ephemeral network using
- * {@link WifiConfigManager#disableEphemeralNetwork(String)}.
+ * {@link WifiConfigManager#userTemporarilyDisabledNetwork(String)}.
*/
@Test
- public void testDisableEphemeralNetwork() throws Exception {
- WifiConfiguration ephemeralNetwork = WifiConfigurationTestUtil.createEphemeralNetwork();
+ public void testUserDisableNetwork() throws Exception {
+ WifiConfiguration openNetwork = WifiConfigurationTestUtil.createOpenNetwork();
List<WifiConfiguration> networks = new ArrayList<>();
- networks.add(ephemeralNetwork);
-
- verifyAddEphemeralNetworkToWifiConfigManager(ephemeralNetwork);
-
+ networks.add(openNetwork);
+ verifyAddNetworkToWifiConfigManager(openNetwork);
List<WifiConfiguration> retrievedNetworks =
mWifiConfigManager.getConfiguredNetworksWithPasswords();
WifiConfigurationTestUtil.assertConfigurationsEqualForConfigManagerAddOrUpdate(
networks, retrievedNetworks);
- verifyExpiryOfTimeout(ephemeralNetwork);
+ verifyExpiryOfTimeout(openNetwork);
}
/**
* Verifies the disconnection of Passpoint network using
- * {@link WifiConfigManager#disableEphemeralNetwork(String)}.
+ * {@link WifiConfigManager#userTemporarilyDisabledNetwork(String)}.
*/
@Test
public void testDisablePasspointNetwork() throws Exception {
@@ -4613,8 +4611,8 @@ public class WifiConfigManagerTest extends WifiBaseTest {
/**
* Verifies the disconnection of Passpoint network using
- * {@link WifiConfigManager#disableEphemeralNetwork(String)} and ensures that any user choice
- * set over other networks is removed.
+ * {@link WifiConfigManager#userTemporarilyDisabledNetwork(String)} and ensures that any user
+ * choice set over other networks is removed.
*/
@Test
public void testDisablePasspointNetworkRemovesUserChoice() throws Exception {
@@ -4636,32 +4634,71 @@ public class WifiConfigManagerTest extends WifiBaseTest {
retrievedSavedNetwork.getNetworkSelectionStatus().getConnectChoice());
// Disable the passpoint network & ensure the user choice is now removed from saved network.
- mWifiConfigManager.disableEphemeralNetwork(passpointNetwork.SSID);
+ mWifiConfigManager.userTemporarilyDisabledNetwork(passpointNetwork.FQDN);
retrievedSavedNetwork = mWifiConfigManager.getConfiguredNetwork(savedNetwork.networkId);
assertNull(retrievedSavedNetwork.getNetworkSelectionStatus().getConnectChoice());
}
+ @Test
+ public void testUserEnableDisabledNetwork() {
+ WifiConfiguration openNetwork = WifiConfigurationTestUtil.createOpenNetwork();
+ List<WifiConfiguration> networks = new ArrayList<>();
+ networks.add(openNetwork);
+ verifyAddNetworkToWifiConfigManager(openNetwork);
+ List<WifiConfiguration> retrievedNetworks =
+ mWifiConfigManager.getConfiguredNetworksWithPasswords();
+ WifiConfigurationTestUtil.assertConfigurationsEqualForConfigManagerAddOrUpdate(
+ networks, retrievedNetworks);
+
+ mWifiConfigManager.userTemporarilyDisabledNetwork(openNetwork.SSID);
+ assertTrue(mWifiConfigManager.isNetworkTemporarilyDisabledByUser(openNetwork.SSID));
+ mWifiConfigManager.userEnabledNetwork(retrievedNetworks.get(0).networkId);
+ assertFalse(mWifiConfigManager.isNetworkTemporarilyDisabledByUser(openNetwork.SSID));
+ }
+
+ @Test
+ public void testUserAddOrUpdateSavedNetworkEnableNetwork() {
+ WifiConfiguration openNetwork = WifiConfigurationTestUtil.createOpenNetwork();
+ List<WifiConfiguration> networks = new ArrayList<>();
+ networks.add(openNetwork);
+ mWifiConfigManager.userTemporarilyDisabledNetwork(openNetwork.SSID);
+ assertTrue(mWifiConfigManager.isNetworkTemporarilyDisabledByUser(openNetwork.SSID));
+
+ verifyAddNetworkToWifiConfigManager(openNetwork);
+ List<WifiConfiguration> retrievedNetworks =
+ mWifiConfigManager.getConfiguredNetworksWithPasswords();
+ WifiConfigurationTestUtil.assertConfigurationsEqualForConfigManagerAddOrUpdate(
+ networks, retrievedNetworks);
+ assertFalse(mWifiConfigManager.isNetworkTemporarilyDisabledByUser(openNetwork.SSID));
+ }
+
private void verifyExpiryOfTimeout(WifiConfiguration config) {
// Disable the ephemeral network.
long disableTimeMs = 546643L;
long currentTimeMs = disableTimeMs;
when(mClock.getWallClockMillis()).thenReturn(currentTimeMs);
- mWifiConfigManager.disableEphemeralNetwork(config.SSID);
-
+ String network = config.isPasspoint() ? config.FQDN : config.SSID;
+ mWifiConfigManager.userTemporarilyDisabledNetwork(network);
+ // Before timer is triggered, timer will not expiry will enable network.
+ currentTimeMs = disableTimeMs
+ + WifiConfigManager.USER_DISCONNECT_NETWORK_BLOCK_EXPIRY_MS + 1;
+ when(mClock.getWallClockMillis()).thenReturn(currentTimeMs);
+ assertTrue(mWifiConfigManager.isNetworkTemporarilyDisabledByUser(network));
+ for (int i = 0; i < WifiConfigManager.SCAN_RESULT_MISSING_COUNT_THRESHOLD; i++) {
+ mWifiConfigManager.updateUserDisabledList(new ArrayList<>());
+ }
// Before the expiry of timeout.
- currentTimeMs = disableTimeMs + WifiConfigManager.DELETED_EPHEMERAL_SSID_EXPIRY_MS - 1;
+ currentTimeMs = currentTimeMs
+ + WifiConfigManager.USER_DISCONNECT_NETWORK_BLOCK_EXPIRY_MS - 1;
when(mClock.getWallClockMillis()).thenReturn(currentTimeMs);
- assertTrue(mWifiConfigManager.wasEphemeralNetworkDeleted(config.SSID));
- assertTrue(mWifiConfigManager.getConfiguredNetwork(config.networkId)
- .getNetworkSelectionStatus().isNetworkPermanentlyDisabled());
+ assertTrue(mWifiConfigManager.isNetworkTemporarilyDisabledByUser(network));
// After the expiry of timeout.
- currentTimeMs = disableTimeMs + WifiConfigManager.DELETED_EPHEMERAL_SSID_EXPIRY_MS + 1;
+ currentTimeMs = currentTimeMs
+ + WifiConfigManager.USER_DISCONNECT_NETWORK_BLOCK_EXPIRY_MS + 1;
when(mClock.getWallClockMillis()).thenReturn(currentTimeMs);
- assertFalse(mWifiConfigManager.wasEphemeralNetworkDeleted(config.SSID));
- assertFalse(mWifiConfigManager.getConfiguredNetwork(config.networkId)
- .getNetworkSelectionStatus().isNetworkPermanentlyDisabled());
+ assertFalse(mWifiConfigManager.isNetworkTemporarilyDisabledByUser(network));
}
private NetworkUpdateResult verifyAddOrUpdateNetworkWithProxySettingsAndPermissions(
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiConnectivityManagerTest.java b/tests/wifitests/src/com/android/server/wifi/WifiConnectivityManagerTest.java
index acac4f2f4..a3424f39f 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiConnectivityManagerTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiConnectivityManagerTest.java
@@ -50,6 +50,8 @@ import android.util.LocalLog;
import androidx.test.filters.SmallTest;
+import com.android.server.wifi.hotspot2.PasspointManager;
+import com.android.server.wifi.util.ScanResultUtil;
import com.android.wifi.resources.R;
import org.junit.After;
@@ -68,8 +70,10 @@ import java.io.StringWriter;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import java.util.concurrent.Executor;
import java.util.stream.Collectors;
@@ -107,6 +111,7 @@ public class WifiConnectivityManagerTest extends WifiBaseTest {
when(mWifiInjector.getWifiScoreCard()).thenReturn(mWifiScoreCard);
when(mWifiInjector.getWifiNetworkSuggestionsManager())
.thenReturn(mWifiNetworkSuggestionsManager);
+ when(mWifiInjector.getPasspointManager()).thenReturn(mPasspointManager);
mWifiConnectivityManager = createConnectivityManager();
verify(mWifiConfigManager).addOnNetworkUpdateListener(anyObject());
mWifiConnectivityManager.setTrustedConnectionAllowed(true);
@@ -175,6 +180,7 @@ public class WifiConnectivityManagerTest extends WifiBaseTest {
@Mock private WifiChannelUtilization mWifiChannelUtilization;
@Mock private ScoringParams mScoringParams;
@Mock private WifiScoreCard mWifiScoreCard;
+ @Mock private PasspointManager mPasspointManager;
@Mock private WifiScoreCard.PerNetwork mPerNetwork;
@Mock private WifiScoreCard.PerNetwork mPerNetwork1;
@Mock WifiCandidates.Candidate mCandidate1;
@@ -209,6 +215,8 @@ public class WifiConnectivityManagerTest extends WifiBaseTest {
private static final int TEST_FREQUENCY_3 = 5240;
private static final int HIGH_MVMT_SCAN_DELAY_MS = 10000;
private static final int HIGH_MVMT_RSSI_DELTA = 10;
+ private static final String TEST_FQDN = "FQDN";
+ private static final String TEST_SSID = "SSID";
Context mockContext() {
Context context = mock(Context.class);
@@ -1682,6 +1690,37 @@ public class WifiConnectivityManagerTest extends WifiBaseTest {
}
/**
+ * Verify when new scanResults are available, UserDisabledList will be updated.
+ */
+ @Test
+ public void verifyUserDisabledListUpdated() {
+ mResources.setBoolean(
+ R.bool.config_wifi_framework_use_single_radio_chain_scan_results_network_selection,
+ true);
+ verify(mWifiConfigManager, never()).updateUserDisabledList(anyList());
+ Set<String> updateNetworks = new HashSet<>();
+ mScanData = createScanDataWithDifferentRadioChainInfos();
+ int i = 0;
+ for (ScanResult scanResult : mScanData.getResults()) {
+ scanResult.SSID = TEST_SSID + i;
+ updateNetworks.add(ScanResultUtil.createQuotedSSID(scanResult.SSID));
+ i++;
+ }
+ updateNetworks.add(TEST_FQDN);
+ mScanData.getResults()[0].setFlag(ScanResult.FLAG_PASSPOINT_NETWORK);
+ HashMap<String, Map<Integer, List<ScanResult>>> passpointNetworks = new HashMap<>();
+ passpointNetworks.put(TEST_FQDN, new HashMap<>());
+ when(mPasspointManager.getAllMatchingPasspointProfilesForScanResults(any()))
+ .thenReturn(passpointNetworks);
+
+ mWifiConnectivityManager.forceConnectivityScan(WIFI_WORK_SOURCE);
+ ArgumentCaptor<ArrayList<String>> listArgumentCaptor =
+ ArgumentCaptor.forClass(ArrayList.class);
+ verify(mWifiConfigManager).updateUserDisabledList(listArgumentCaptor.capture());
+ assertEquals(updateNetworks, new HashSet<>(listArgumentCaptor.getValue()));
+ }
+
+ /**
* Verify that a blacklisted BSSID becomes available only after
* BSSID_BLACKLIST_EXPIRE_TIME_MS.
*/
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiNetworkFactoryTest.java b/tests/wifitests/src/com/android/server/wifi/WifiNetworkFactoryTest.java
index 52c43ce7a..c25648d53 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiNetworkFactoryTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiNetworkFactoryTest.java
@@ -2120,7 +2120,7 @@ public class WifiNetworkFactoryTest extends WifiBaseTest {
reset(mNetworkRequestMatchCallback, mWifiScanner, mAlarmManager, mClientModeImpl);
// 2. Simulate user forgeting the network.
- when(mWifiConfigManager.wasEphemeralNetworkDeleted(
+ when(mWifiConfigManager.isNetworkTemporarilyDisabledByUser(
ScanResultUtil.createQuotedSSID(mTestScanDatas[0].getResults()[0].SSID)))
.thenReturn(true);
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java b/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java
index 36904e041..8ecac08bc 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java
@@ -4102,7 +4102,7 @@ public class WifiServiceImplTest extends WifiBaseTest {
verify(mPasspointManager).removeProvider(anyInt(), anyBoolean(), eq(config.getUniqueId()),
isNull());
verify(mPasspointManager).clearAnqpRequestsAndFlushCache();
- verify(mWifiConfigManager).clearDeletedEphemeralNetworks();
+ verify(mWifiConfigManager).clearUserTemporarilyDisabledList();
verify(mWifiConfigManager).removeAllEphemeralOrPasspointConfiguredNetworks();
verify(mClientModeImpl).clearNetworkRequestUserApprovedAccessPoints();
verify(mWifiNetworkSuggestionsManager).clear();
@@ -4482,7 +4482,7 @@ public class WifiServiceImplTest extends WifiBaseTest {
anyInt(), anyInt())).thenReturn(PackageManager.PERMISSION_GRANTED);
mWifiServiceImpl.disableEphemeralNetwork(new String(), TEST_PACKAGE_NAME);
mLooper.dispatchAll();
- verify(mWifiConfigManager).disableEphemeralNetwork(anyString());
+ verify(mWifiConfigManager).userTemporarilyDisabledNetwork(anyString());
}
/**
@@ -4495,7 +4495,7 @@ public class WifiServiceImplTest extends WifiBaseTest {
anyInt(), anyInt())).thenReturn(PackageManager.PERMISSION_DENIED);
mWifiServiceImpl.disableEphemeralNetwork(new String(), TEST_PACKAGE_NAME);
mLooper.dispatchAll();
- verify(mWifiConfigManager, never()).disableEphemeralNetwork(anyString());
+ verify(mWifiConfigManager, never()).userTemporarilyDisabledNetwork(anyString());
}
/**
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 0be5035ad..493be0fd9 100644
--- a/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointNetworkNominateHelperTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointNetworkNominateHelperTest.java
@@ -516,7 +516,7 @@ public class PasspointNetworkNominateHelperTest {
when(mWifiConfigManager.addOrUpdateNetwork(any(WifiConfiguration.class), anyInt()))
.thenReturn(new NetworkUpdateResult(TEST_NETWORK_ID));
when(mWifiConfigManager.getConfiguredNetwork(TEST_NETWORK_ID)).thenReturn(TEST_CONFIG1);
- when(mWifiConfigManager.wasEphemeralNetworkDeleted("\"" + TEST_SSID1 + "\""))
+ when(mWifiConfigManager.isNetworkTemporarilyDisabledByUser(TEST_FQDN1))
.thenReturn(true);
List<Pair<ScanDetail, WifiConfiguration>> candidates = mNominateHelper
.getPasspointNetworkCandidates(scanDetails, false);