diff options
| -rw-r--r-- | packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java | 4 | ||||
| -rw-r--r-- | packages/SettingsLib/tests/src/com/android/settingslib/wifi/WifiTrackerTest.java | 24 |
2 files changed, 28 insertions, 0 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java index 7060c64bb369..68803b39ea1d 100644 --- a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java +++ b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java @@ -106,6 +106,10 @@ public class WifiTracker { throw new IllegalArgumentException("Must include either saved or scans"); } mContext = context; + if (currentLooper == null) { + // When we aren't on a looper thread, default to the main. + currentLooper = Looper.getMainLooper(); + } mMainHandler = new MainHandler(currentLooper); mWorkHandler = new WorkHandler( workerLooper != null ? workerLooper : currentLooper); diff --git a/packages/SettingsLib/tests/src/com/android/settingslib/wifi/WifiTrackerTest.java b/packages/SettingsLib/tests/src/com/android/settingslib/wifi/WifiTrackerTest.java index 103cd3a65659..479c7be0105b 100644 --- a/packages/SettingsLib/tests/src/com/android/settingslib/wifi/WifiTrackerTest.java +++ b/packages/SettingsLib/tests/src/com/android/settingslib/wifi/WifiTrackerTest.java @@ -171,6 +171,30 @@ public class WifiTrackerTest extends BaseTest { assertEquals(TEST_SSIDS[0], accessPoints.get(1).getSsid()); } + /** + * This tests the case where Settings runs this on a non-looper thread for indexing. + */ + public void testSavedOnlyNoLooper() { + mWifiTracker = new WifiTracker(mContext, mWifiListener, mLooper, true, false, true, + mWifiManager, null); + mWifiTracker.mScanner = mWifiTracker.new Scanner(); + + List<WifiConfiguration> wifiConfigs = new ArrayList<WifiConfiguration>(); + List<ScanResult> scanResults = new ArrayList<ScanResult>(); + generateTestNetworks(wifiConfigs, scanResults, true); + + // Send all of the configs and scan results to the tracker. + Mockito.when(mWifiManager.getConfiguredNetworks()).thenReturn(wifiConfigs); + Mockito.when(mWifiManager.getScanResults()).thenReturn(scanResults); + mWifiTracker.forceUpdate(); + + List<AccessPoint> accessPoints = mWifiTracker.getAccessPoints(); + // Only expect the first two to come back in the results. + assertEquals("Expected number of results", 2, accessPoints.size()); + assertEquals(TEST_SSIDS[1], accessPoints.get(0).getSsid()); + assertEquals(TEST_SSIDS[0], accessPoints.get(1).getSsid()); + } + public void testAvailableOnly() { mWifiTracker = new WifiTracker(mContext, mWifiListener, mLooper, false, true, true, mWifiManager, mMainLooper); |