summaryrefslogtreecommitdiffstats
path: root/packages/SettingsLib
diff options
context:
space:
mode:
authorJason Monk <jmonk@android.com>2015-05-22 11:25:04 -0400
committerJason Monk <jmonk@google.com>2015-05-22 11:26:34 -0400
commitbf3d1af3d8bd32f410aa5cc44ccdc1df593ef210 (patch)
treee034fa0065dfbceca7efd77ee43aaacf9240c2b6 /packages/SettingsLib
parentae0940fe754b7aba552b4a5cd616df052606ccd1 (diff)
downloadframeworks_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.java4
-rw-r--r--packages/SettingsLib/tests/src/com/android/settingslib/wifi/WifiTrackerTest.java24
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);