diff options
| author | 2017-06-26 16:05:40 -0700 | |
|---|---|---|
| committer | 2017-07-12 19:12:30 -0700 | |
| commit | 4bb84116636b51bf6925580df569fdeedf6061ae (patch) | |
| tree | 059043e9fb51160e85906fb02e4ede9b34d1f99f | |
| parent | 1c005d1e80ae4ccd933b6ad6cf791d5dac4dd9d2 (diff) | |
Do not clear scores during stopTracking.
Bug: b/63034725
Test: runtest --path
frameworks/base/packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/WifiTrackerTest.java
Change-Id: Ic15c7f42ec9a3883e8ba34194d9a9410457e4399
| -rw-r--r-- | packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java | 11 | ||||
| -rw-r--r-- | packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/WifiTrackerTest.java | 11 |
2 files changed, 18 insertions, 4 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java index 9ccd33226258..5a35da96375a 100644 --- a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java +++ b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java @@ -365,7 +365,7 @@ public class WifiTracker { mConnectivityManager.unregisterNetworkCallback(mNetworkCallback); mRegistered = false; } - unregisterAndClearScoreCache(); + unregisterScoreCache(); pauseScanning(); mContext.getContentResolver().unregisterContentObserver(mObserver); @@ -375,11 +375,14 @@ public class WifiTracker { mStaleScanResults = true; } - private void unregisterAndClearScoreCache() { + private void unregisterScoreCache() { mNetworkScoreManager.unregisterNetworkScoreCache(NetworkKey.TYPE_WIFI, mScoreCache); - mScoreCache.clearScores(); - // Synchronize on mLock to avoid concurrent modification during updateAccessPoints + // We do not want to clear the existing scores in the cache, as this method is called during + // stop tracking on activity pause. Hence, on resumption we want the ability to show the + // last known, potentially stale, scores. However, by clearing requested scores, the scores + // will be requested again upon resumption of tracking, and if any changes have occurred + // the listeners (UI) will be updated accordingly. synchronized (mLock) { mRequestedScores.clear(); } diff --git a/packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/WifiTrackerTest.java b/packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/WifiTrackerTest.java index b6d0c457db7c..c87d01a7da8e 100644 --- a/packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/WifiTrackerTest.java +++ b/packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/WifiTrackerTest.java @@ -473,6 +473,17 @@ public class WifiTrackerTest { } @Test + public void stopTracking_shouldNotClearExistingScores() + throws InterruptedException { + // Start the tracker and inject the initial scan results and then stop tracking + WifiTracker tracker = createTrackerWithImmediateBroadcastsAndInjectInitialScanResults(); + updateScoresAndWaitForAccessPointsChangedCallback(tracker); + tracker.stopTracking(); + + assertThat(mScoreCacheCaptor.getValue().getScoredNetwork(NETWORK_KEY_1)).isNotNull(); + } + + @Test public void scoreCacheUpdateScoresShouldTriggerOnAccessPointsChanged() throws InterruptedException { WifiTracker tracker = createMockedWifiTracker(); |