diff options
author | TreeHugger Robot <treehugger-gerrit@google.com> | 2020-02-18 18:16:52 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2020-02-18 18:16:52 +0000 |
commit | beb9fe4d1848ada5fe2de19b99af747404cc800a (patch) | |
tree | 06c83f31e4eeff0309e67369cc84af644ee7965c | |
parent | bfa2abd3e7a00aac0dedbaa4860a214ab0b20877 (diff) | |
parent | b044f125648b28398774397da23481614522bffc (diff) |
Merge "Clear last user selection on wifi disable"
5 files changed, 20 insertions, 2 deletions
diff --git a/service/java/com/android/server/wifi/WifiConfigManager.java b/service/java/com/android/server/wifi/WifiConfigManager.java index 9bb43e8d7..6c32ff695 100644 --- a/service/java/com/android/server/wifi/WifiConfigManager.java +++ b/service/java/com/android/server/wifi/WifiConfigManager.java @@ -2162,7 +2162,7 @@ public class WifiConfigManager { * Helper method to clear out the {@link #mNextNetworkId} user/app network selection. This * is done when either the corresponding network is either removed or disabled. */ - private void clearLastSelectedNetwork() { + public void clearLastSelectedNetwork() { if (mVerboseLoggingEnabled) { Log.v(TAG, "Clearing last selected network"); } diff --git a/service/java/com/android/server/wifi/WifiConnectivityManager.java b/service/java/com/android/server/wifi/WifiConnectivityManager.java index af2c3b568..70fe66659 100644 --- a/service/java/com/android/server/wifi/WifiConnectivityManager.java +++ b/service/java/com/android/server/wifi/WifiConnectivityManager.java @@ -1464,7 +1464,6 @@ public class WifiConnectivityManager { if (!mRunning) return; mRunning = false; stopConnectivityScan(); - mBssidBlocklistMonitor.clearBssidBlocklist(); resetLastPeriodicSingleScanTimeStamp(); mOpenNetworkNotifier.clearPendingNotification(true /* resetRepeatDelay */); mLastConnectionAttemptBssid = null; @@ -1493,6 +1492,10 @@ public class WifiConnectivityManager { public void setWifiEnabled(boolean enable) { localLog("Set WiFi " + (enable ? "enabled" : "disabled")); + if (mWifiEnabled && !enable) { + mNetworkSelector.resetOnDisable(); + mBssidBlocklistMonitor.clearBssidBlocklist(); + } mWifiEnabled = enable; updateRunningState(); } diff --git a/service/java/com/android/server/wifi/WifiNetworkSelector.java b/service/java/com/android/server/wifi/WifiNetworkSelector.java index 717b37792..1e5b6c12d 100644 --- a/service/java/com/android/server/wifi/WifiNetworkSelector.java +++ b/service/java/com/android/server/wifi/WifiNetworkSelector.java @@ -650,6 +650,13 @@ public class WifiNetworkSelector { } /** + * Cleans up state that should go away when wifi is disabled. + */ + public void resetOnDisable() { + mWifiConfigManager.clearLastSelectedNetwork(); + } + + /** * Select the best network from the ones in range. Scan detail cache is also updated here. * * @param scanDetails List of ScanDetail for all the APs in range diff --git a/tests/wifitests/src/com/android/server/wifi/WifiConnectivityManagerTest.java b/tests/wifitests/src/com/android/server/wifi/WifiConnectivityManagerTest.java index e2549e2bd..435577b52 100644 --- a/tests/wifitests/src/com/android/server/wifi/WifiConnectivityManagerTest.java +++ b/tests/wifitests/src/com/android/server/wifi/WifiConnectivityManagerTest.java @@ -1553,6 +1553,8 @@ public class WifiConnectivityManagerTest extends WifiBaseTest { // Verify the BSSID blacklist is cleared again. verify(mBssidBlocklistMonitor, times(2)).clearBssidBlocklist(); + // Verify WifiNetworkSelector is informed of the disable. + verify(mWifiNS).resetOnDisable(); } /** diff --git a/tests/wifitests/src/com/android/server/wifi/WifiNetworkSelectorTest.java b/tests/wifitests/src/com/android/server/wifi/WifiNetworkSelectorTest.java index 0f67bf126..1e72cb758 100644 --- a/tests/wifitests/src/com/android/server/wifi/WifiNetworkSelectorTest.java +++ b/tests/wifitests/src/com/android/server/wifi/WifiNetworkSelectorTest.java @@ -1368,4 +1368,10 @@ public class WifiNetworkSelectorTest extends WifiBaseTest { assertEquals("Expect null configuration", null, candidate); assertTrue(mWifiNetworkSelector.getConnectableScanDetails().isEmpty()); } + + @Test + public void resetOnDisableCallsClearLastSelectedNetwork() { + mWifiNetworkSelector.resetOnDisable(); + verify(mWifiConfigManager).clearLastSelectedNetwork(); + } } |