Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3b63aa79 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Do not clear scores during stopTracking." into oc-dr1-dev

parents a363ab9d 75f94803
Loading
Loading
Loading
Loading
+7 −4
Original line number Diff line number Diff line
@@ -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();
        }
+11 −0
Original line number Diff line number Diff line
@@ -472,6 +472,17 @@ public class WifiTrackerTest {
        assertTrue(mRequestedKeys.contains(NETWORK_KEY_2));
    }

    @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 {