Merge "Change initial value of mStaleScanResults to true." into oc-dr1-dev
diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java
index 596eaef..9ccd332 100644
--- a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java
+++ b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java
@@ -16,7 +16,6 @@
package com.android.settingslib.wifi;
import android.annotation.MainThread;
-import android.annotation.Nullable;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
@@ -144,7 +143,7 @@
@VisibleForTesting
Scanner mScanner;
- private boolean mStaleScanResults = false;
+ private boolean mStaleScanResults = true;
public WifiTracker(Context context, WifiListener wifiListener,
boolean includeSaved, boolean includeScans) {
@@ -767,20 +766,21 @@
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
- if (WifiManager.SCAN_RESULTS_AVAILABLE_ACTION.equals(action)) {
- mStaleScanResults = false;
- }
-
if (WifiManager.WIFI_STATE_CHANGED_ACTION.equals(action)) {
updateWifiState(intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE,
WifiManager.WIFI_STATE_UNKNOWN));
- } else if (WifiManager.SCAN_RESULTS_AVAILABLE_ACTION.equals(action) ||
- WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION.equals(action) ||
- WifiManager.LINK_CONFIGURATION_CHANGED_ACTION.equals(action)) {
+ } else if (WifiManager.SCAN_RESULTS_AVAILABLE_ACTION.equals(action)) {
+ mWorkHandler
+ .obtainMessage(
+ WorkHandler.MSG_UPDATE_ACCESS_POINTS,
+ WorkHandler.CLEAR_STALE_SCAN_RESULTS,
+ 0)
+ .sendToTarget();
+ } else if (WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION.equals(action)
+ || WifiManager.LINK_CONFIGURATION_CHANGED_ACTION.equals(action)) {
mWorkHandler.sendEmptyMessage(WorkHandler.MSG_UPDATE_ACCESS_POINTS);
} else if (WifiManager.NETWORK_STATE_CHANGED_ACTION.equals(action)) {
- NetworkInfo info = (NetworkInfo) intent.getParcelableExtra(
- WifiManager.EXTRA_NETWORK_INFO);
+ NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
mConnected.set(info.isConnected());
mMainHandler.sendEmptyMessage(MainHandler.MSG_CONNECTED_CHANGED);
@@ -872,6 +872,8 @@
private static final int MSG_RESUME = 2;
private static final int MSG_UPDATE_WIFI_STATE = 3;
+ private static final int CLEAR_STALE_SCAN_RESULTS = 1;
+
public WorkHandler(Looper looper) {
super(looper);
}
@@ -888,6 +890,9 @@
switch (msg.what) {
case MSG_UPDATE_ACCESS_POINTS:
+ if (msg.arg1 == CLEAR_STALE_SCAN_RESULTS) {
+ mStaleScanResults = false;
+ }
updateAccessPoints();
break;
case MSG_UPDATE_NETWORK_INFO:
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 071f921..b6d0c45 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
@@ -724,7 +724,7 @@
verify(mockWifiManager, times(2)).getConfiguredNetworks();
verify(mockConnectivityManager).getNetworkInfo(any(Network.class));
- verify(mockWifiListener).onAccessPointsChanged();
+ verify(mockWifiListener, never()).onAccessPointsChanged(); // mStaleAccessPoints is true
assertThat(tracker.getAccessPoints().size()).isEqualTo(2);
assertThat(tracker.getAccessPoints().get(0).isActive()).isTrue();
}
@@ -798,6 +798,25 @@
}
@Test
+ public void startTrackingShouldNotSendAnyCallbacksUntilScanResultsAreProcessed()
+ throws Exception {
+ WifiTracker tracker = createMockedWifiTracker();
+ startTracking(tracker);
+ waitForHandlersToProcessCurrentlyEnqueuedMessages(tracker);
+
+ tracker.mReceiver.onReceive(mContext, new Intent(WifiManager.WIFI_STATE_CHANGED_ACTION));
+ tracker.mReceiver.onReceive(
+ mContext, new Intent(WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION));
+ tracker.mReceiver.onReceive(
+ mContext, new Intent(WifiManager.LINK_CONFIGURATION_CHANGED_ACTION));
+
+ waitForHandlersToProcessCurrentlyEnqueuedMessages(tracker);
+ verify(mockWifiListener, never()).onAccessPointsChanged();
+
+ sendScanResultsAndProcess(tracker); // verifies onAccessPointsChanged is invoked
+ }
+
+ @Test
public void disablingWifiShouldClearExistingAccessPoints() throws Exception {
WifiTracker tracker = createTrackerWithScanResultsAndAccessPoint1Connected();