Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bf3d1af3 authored by Jason Monk's avatar Jason Monk Committed by Jason Monk
Browse files

SettingsLib: Fix wifi crash during settings index

and test it

Bug: 21365029
Change-Id: I9a914773577dcbe591b41c9114ba4d078b5e7369
parent ae0940fe
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -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);
+24 −0
Original line number Diff line number Diff line
@@ -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);