SettingsLib: Fix wifi crash during settings index
and test it Bug: 21365029 Change-Id: I9a914773577dcbe591b41c9114ba4d078b5e7369
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user