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

Commit 9ef07ad2 authored by Prem Kumar's avatar Prem Kumar Committed by Android (Google) Code Review
Browse files

Merge "make sure wificonfiguration scan cache doesnt grow unbounded Bug:18703749" into lmp-mr1-dev

parents 6c2fa049 53d1f070
Loading
Loading
Loading
Loading
+36 −0
Original line number Diff line number Diff line
@@ -927,6 +927,42 @@ public class WifiConfiguration implements Parcelable {
        }
    }

    /** @hide
     *  trim the scan Result Cache
     * @param: number of entries to keep in the cache
     */
    public void trimScanResultsCache(int num) {
        if (this.scanResultCache == null) {
            return;
        }
        int currenSize = this.scanResultCache.size();
        if (currenSize <= num) {
            return; // Nothing to trim
        }
        ArrayList<ScanResult> list = new ArrayList<ScanResult>(this.scanResultCache.values());
        if (list.size() != 0) {
            // Sort by descending timestamp
            Collections.sort(list, new Comparator() {
                public int compare(Object o1, Object o2) {
                    ScanResult a = (ScanResult)o1;
                    ScanResult b = (ScanResult)o2;
                    if (a.seen > b.seen) {
                        return 1;
                    }
                    if (a.seen < b.seen) {
                        return -1;
                    }
                    return a.BSSID.compareTo(b.BSSID);
                }
            });
        }
        for (int i = 0; i < currenSize - num ; i++) {
            // Remove oldest results from scan cache
            ScanResult result = list.get(i);
            this.scanResultCache.remove(result.BSSID);
        }
    }

    /* @hide */
    private ArrayList<ScanResult> sortScanResults() {
        ArrayList<ScanResult> list = new ArrayList<ScanResult>(this.scanResultCache.values());