diff options
| -rw-r--r-- | packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java | 15 | ||||
| -rw-r--r-- | packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/WifiTrackerTest.java | 32 |
2 files changed, 38 insertions, 9 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java index 9050b4b0a15b..0dbc037f2298 100644 --- a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java +++ b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java @@ -81,7 +81,7 @@ public class WifiTracker implements LifecycleObserver, OnStart, OnStop, OnDestro private static final long DEFAULT_MAX_CACHED_SCORE_AGE_MILLIS = 20 * DateUtils.MINUTE_IN_MILLIS; /** Maximum age of scan results to hold onto while actively scanning. **/ - private static final long MAX_SCAN_RESULT_AGE_MILLIS = 25000; + private static final long MAX_SCAN_RESULT_AGE_MILLIS = 15000; private static final String TAG = "WifiTracker"; private static final boolean DBG() { @@ -134,8 +134,8 @@ public class WifiTracker implements LifecycleObserver, OnStart, OnStop, OnDestro /** * Tracks whether fresh scan results have been received since scanning start. * - * <p>If this variable is false, we will not evict the scan result cache or invoke callbacks - * so that we do not update the UI with stale data / clear out existing UI elements prematurely. + * <p>If this variable is false, we will not invoke callbacks so that we do not + * update the UI with stale data / clear out existing UI elements prematurely. */ private boolean mStaleScanResults = true; @@ -327,7 +327,8 @@ public class WifiTracker implements LifecycleObserver, OnStart, OnStop, OnDestro * <p>Intended to only be invoked within {@link #onStart()}. */ @MainThread - private void forceUpdate() { + @VisibleForTesting + void forceUpdate() { mLastInfo = mWifiManager.getConnectionInfo(); mLastNetworkInfo = mConnectivityManager.getNetworkInfo(mWifiManager.getCurrentNetwork()); @@ -443,10 +444,8 @@ public class WifiTracker implements LifecycleObserver, OnStart, OnStop, OnDestro mScanResultCache.put(newResult.BSSID, newResult); } - // Don't evict old results if no new scan results - if (!mStaleScanResults) { - evictOldScans(); - } + // Evict old results in all conditions + evictOldScans(); ArrayMap<String, List<ScanResult>> scanResultsByApKey = new ArrayMap<>(); for (ScanResult result : mScanResultCache.values()) { 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 517db78d5dd1..1860b31081e1 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 @@ -21,7 +21,6 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; -import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.any; import static org.mockito.Mockito.anyInt; import static org.mockito.Mockito.doAnswer; @@ -104,6 +103,10 @@ public class WifiTrackerTest { private static final byte SCORE_2 = 15; private static final int BADGE_2 = AccessPoint.Speed.FAST; + private static final String SSID_3 = "ssid3"; + private static final String BSSID_3 = "CC:00:00:00:00:00"; + private static final int RSSI_3 = -40; + // TODO(b/65594609): Convert mutable Data objects to instance variables / builder pattern private static final int NETWORK_ID_1 = 123; private static final int CONNECTED_RSSI = -50; @@ -255,6 +258,19 @@ public class WifiTrackerTest { SystemClock.elapsedRealtime() * 1000 /* microsecond timestamp */); } + private static ScanResult buildStaleScanResult() { + return new ScanResult( + WifiSsid.createFromAsciiEncoded(SSID_3), + BSSID_3, + 0, // hessid + 0, //anqpDomainId + null, // osuProviders + "", // capabilities + RSSI_3, + 0, // frequency + 0 /* microsecond timestamp */); + } + private WifiTracker createTrackerWithImmediateBroadcastsAndInjectInitialScanResults( Intent ... intents) throws InterruptedException { @@ -896,4 +912,18 @@ public class WifiTrackerTest { assertThat(aps.get(0).isReachable()).isTrue(); assertThat(aps.get(1).isReachable()).isTrue(); } + + @Test + public void onStart_updateScanResults_evictOldScanResult() { + when(mockWifiManager.getScanResults()).thenReturn( + Arrays.asList(buildScanResult1(), buildScanResult2(), buildStaleScanResult())); + WifiTracker tracker = createMockedWifiTracker(); + + tracker.forceUpdate(); + + // Only has scanResult1 and scanResult2 + assertThat(tracker.getAccessPoints()).hasSize(2); + assertThat(tracker.getAccessPoints().get(0).getBssid()).isEqualTo(BSSID_1); + assertThat(tracker.getAccessPoints().get(1).getBssid()).isEqualTo(BSSID_2); + } } |