diff options
author | Jason Monk <jmonk@android.com> | 2015-05-22 11:25:04 -0400 |
---|---|---|
committer | Jason Monk <jmonk@google.com> | 2015-05-22 11:26:34 -0400 |
commit | bf3d1af3d8bd32f410aa5cc44ccdc1df593ef210 (patch) | |
tree | e034fa0065dfbceca7efd77ee43aaacf9240c2b6 /packages/SettingsLib | |
parent | ae0940fe754b7aba552b4a5cd616df052606ccd1 (diff) | |
download | frameworks_base-bf3d1af3d8bd32f410aa5cc44ccdc1df593ef210.zip frameworks_base-bf3d1af3d8bd32f410aa5cc44ccdc1df593ef210.tar.gz frameworks_base-bf3d1af3d8bd32f410aa5cc44ccdc1df593ef210.tar.bz2 |
SettingsLib: Fix wifi crash during settings index
and test it
Bug: 21365029
Change-Id: I9a914773577dcbe591b41c9114ba4d078b5e7369
Diffstat (limited to 'packages/SettingsLib')
-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 7060c64..68803b3 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 103cd3a..479c7be 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); |