diff options
author | Prem Kumar <premk@google.com> | 2014-12-14 20:06:28 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-12-14 20:06:28 +0000 |
commit | da6ebb4ee29fff8b5455cd8b779aaabc029cd3b5 (patch) | |
tree | 4182d6fb811b8ce0c589c32b66d97c946b8ea617 /wifi | |
parent | 3be9a9cefb5f5c25c3b6ed85f41da8c5aa7b1e6b (diff) | |
parent | fa205ffff292bcbc1c504491b7ca2a5ee1b7b547 (diff) | |
download | frameworks_base-da6ebb4ee29fff8b5455cd8b779aaabc029cd3b5.zip frameworks_base-da6ebb4ee29fff8b5455cd8b779aaabc029cd3b5.tar.gz frameworks_base-da6ebb4ee29fff8b5455cd8b779aaabc029cd3b5.tar.bz2 |
am fa205fff: am 9ef07ad2: Merge "make sure wificonfiguration scan cache doesnt grow unbounded Bug:18703749" into lmp-mr1-dev
* commit 'fa205ffff292bcbc1c504491b7ca2a5ee1b7b547':
make sure wificonfiguration scan cache doesnt grow unbounded Bug:18703749
Diffstat (limited to 'wifi')
-rw-r--r-- | wifi/java/android/net/wifi/WifiConfiguration.java | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/wifi/java/android/net/wifi/WifiConfiguration.java b/wifi/java/android/net/wifi/WifiConfiguration.java index 0457dda..12902bd 100644 --- a/wifi/java/android/net/wifi/WifiConfiguration.java +++ b/wifi/java/android/net/wifi/WifiConfiguration.java @@ -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()); |