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

Commit 24128172 authored by Sundeep Ghuman's avatar Sundeep Ghuman
Browse files

APs from old scans should not have RSSI values set.

This change creates parity between 'initWithScanResult' and
'update(ScanResult)' so that RSSIs are set similarly. This avoids an
edge case problem when starting WifiSettings and only having very old
scan results available (eg, coming from a screen off state), in which
the old APs would have been shown and then instantly removed due to a
sequential WifiTracker call to update the APs based on sticky
broadcasts.

Otherwise worded, creating an AP with a scan result and then instantly
updating it with that same scan result would drastically change the
state of the AccessPoint object.

Bug: b/38212080
Test: With old scan results in the scanner (screen off more than 15
seconds), start wifi settings. Old APs should not be shown and then
instantly removed.

Change-Id: Ida13713dc115ba04882a7651eab4ebfd5cccbe7c
parent 627fbf81
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -511,8 +511,11 @@ public class AccessPoint implements Comparable<AccessPoint> {
            }
        }

        // Only replace the previous value if we have a recent scan result to use
        if (seen != 0) {
            mSeen = seen;
        }
    }

    /**
     * Returns if the network is marked metered. Metering can be marked through its config in
@@ -940,8 +943,10 @@ public class AccessPoint implements Comparable<AccessPoint> {
        security = getSecurity(result);
        if (security == SECURITY_PSK)
            pskType = getPskType(result);
        mRssi = result.level;
        mSeen = result.timestamp;

        mScanResultCache.put(result.BSSID, result);
        updateRssi();
        mSeen = result.timestamp; // even if the timestamp is old it is still valid
    }

    public void saveWifiState(Bundle savedState) {