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");
|
throw new IllegalArgumentException("Must include either saved or scans");
|
||||||
}
|
}
|
||||||
mContext = context;
|
mContext = context;
|
||||||
|
if (currentLooper == null) {
|
||||||
|
// When we aren't on a looper thread, default to the main.
|
||||||
|
currentLooper = Looper.getMainLooper();
|
||||||
|
}
|
||||||
mMainHandler = new MainHandler(currentLooper);
|
mMainHandler = new MainHandler(currentLooper);
|
||||||
mWorkHandler = new WorkHandler(
|
mWorkHandler = new WorkHandler(
|
||||||
workerLooper != null ? workerLooper : currentLooper);
|
workerLooper != null ? workerLooper : currentLooper);
|
||||||
|
|||||||
@@ -171,6 +171,30 @@ public class WifiTrackerTest extends BaseTest {
|
|||||||
assertEquals(TEST_SSIDS[0], accessPoints.get(1).getSsid());
|
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() {
|
public void testAvailableOnly() {
|
||||||
mWifiTracker = new WifiTracker(mContext, mWifiListener, mLooper, false, true, true,
|
mWifiTracker = new WifiTracker(mContext, mWifiListener, mLooper, false, true, true,
|
||||||
mWifiManager, mMainLooper);
|
mWifiManager, mMainLooper);
|
||||||
|
|||||||
Reference in New Issue
Block a user