summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java2
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java50
2 files changed, 32 insertions, 20 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java
index e2013dff8663..27dc628ac094 100644
--- a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java
+++ b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java
@@ -632,7 +632,7 @@ public class AccessPoint implements Comparable<AccessPoint> {
public static String getKey(OsuProvider provider) {
return new StringBuilder()
.append(KEY_PREFIX_OSU)
- .append(provider.getOsuSsid())
+ .append(provider.getFriendlyName())
.append(',')
.append(provider.getServerUri()).toString();
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java
index 58c93e4727eb..b9a5f2347f16 100644
--- a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java
+++ b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java
@@ -616,8 +616,8 @@ public class WifiTracker implements LifecycleObserver, OnStart, OnStop, OnDestro
}
}
- AccessPoint accessPoint = new AccessPoint(mContext, config);
- accessPoint.setScanResults(scanResults);
+ AccessPoint accessPoint =
+ getCachedOrCreatePasspoint(scanResults, cachedAccessPoints, config);
accessPoint.update(connectionConfig, mLastInfo, mLastNetworkInfo);
accessPoints.add(accessPoint);
}
@@ -689,15 +689,24 @@ public class WifiTracker implements LifecycleObserver, OnStart, OnStop, OnDestro
AccessPoint getCachedOrCreate(
List<ScanResult> scanResults,
List<AccessPoint> cache) {
- final int N = cache.size();
- for (int i = 0; i < N; i++) {
- if (cache.get(i).getKey().equals(AccessPoint.getKey(scanResults.get(0)))) {
- AccessPoint ret = cache.remove(i);
- ret.setScanResults(scanResults);
- return ret;
- }
+ AccessPoint accessPoint = getCachedByKey(cache, AccessPoint.getKey(scanResults.get(0)));
+ if (accessPoint == null) {
+ accessPoint = new AccessPoint(mContext, scanResults);
+ } else {
+ accessPoint.setScanResults(scanResults);
+ }
+ return accessPoint;
+ }
+
+ private AccessPoint getCachedOrCreatePasspoint(
+ List<ScanResult> scanResults,
+ List<AccessPoint> cache,
+ WifiConfiguration config) {
+ AccessPoint accessPoint = getCachedByKey(cache, AccessPoint.getKey(config));
+ if (accessPoint == null) {
+ accessPoint = new AccessPoint(mContext, config);
}
- final AccessPoint accessPoint = new AccessPoint(mContext, scanResults);
+ accessPoint.setScanResults(scanResults);
return accessPoint;
}
@@ -705,21 +714,24 @@ public class WifiTracker implements LifecycleObserver, OnStart, OnStop, OnDestro
List<ScanResult> scanResults,
List<AccessPoint> cache,
OsuProvider provider) {
- AccessPoint matchedAccessPoint = null;
+ AccessPoint accessPoint = getCachedByKey(cache, AccessPoint.getKey(provider));
+ if (accessPoint == null) {
+ accessPoint = new AccessPoint(mContext, provider);
+ }
+ accessPoint.setScanResults(scanResults);
+ return accessPoint;
+ }
+
+ private AccessPoint getCachedByKey(List<AccessPoint> cache, String key) {
ListIterator<AccessPoint> lit = cache.listIterator();
while (lit.hasNext()) {
AccessPoint currentAccessPoint = lit.next();
- if (currentAccessPoint.getKey().equals(AccessPoint.getKey(provider))) {
+ if (currentAccessPoint.getKey().equals(key)) {
lit.remove();
- matchedAccessPoint = currentAccessPoint;
- break;
+ return currentAccessPoint;
}
}
- if (matchedAccessPoint == null) {
- matchedAccessPoint = new AccessPoint(mContext, provider);
- }
- matchedAccessPoint.setScanResults(scanResults);
- return matchedAccessPoint;
+ return null;
}
private void updateNetworkInfo(NetworkInfo networkInfo) {