diff options
| -rw-r--r-- | packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java | 2 | ||||
| -rw-r--r-- | packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java | 50 | 
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) {  |