diff options
author | Mitchell Wills <mwills@google.com> | 2015-08-06 02:45:46 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-08-06 02:45:46 +0000 |
commit | 0b09eefa35066e4c43300dcd5b38689c6114b1a2 (patch) | |
tree | a4ff61242744dcadc21421a9ff2e0b90b5d2df33 /packages/SettingsLib | |
parent | b7c419919fce63300f35012a2309a57a8757b0a0 (diff) | |
parent | e69acd7a456fb97d7c816629dedb42026eabdd2e (diff) | |
download | frameworks_base-0b09eefa35066e4c43300dcd5b38689c6114b1a2.zip frameworks_base-0b09eefa35066e4c43300dcd5b38689c6114b1a2.tar.gz frameworks_base-0b09eefa35066e4c43300dcd5b38689c6114b1a2.tar.bz2 |
am e69acd7a: am 104999b9: am d14c4844: Merge "Pass connection configuration when setting wifi info" into mnc-dev
* commit 'e69acd7a456fb97d7c816629dedb42026eabdd2e':
Pass connection configuration when setting wifi info
Diffstat (limited to 'packages/SettingsLib')
-rw-r--r-- | packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java | 21 | ||||
-rw-r--r-- | packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java | 30 |
2 files changed, 38 insertions, 13 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java index 348d0ec..632a867 100644 --- a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java +++ b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java @@ -151,7 +151,7 @@ public class AccessPoint implements Comparable<AccessPoint> { mScanResultCache.put(result.BSSID, result); } } - update(mInfo, mNetworkInfo); + update(mConfig, mInfo, mNetworkInfo); mRssi = getRssi(); mSeen = getSeen(); } @@ -629,11 +629,18 @@ public class AccessPoint implements Comparable<AccessPoint> { return mConfig != null && mConfig.isPasspoint(); } - /** Return whether the given {@link WifiInfo} is for this access point. */ - private boolean isInfoForThisAccessPoint(WifiInfo info) { + /** + * Return whether the given {@link WifiInfo} is for this access point. + * If the current AP does not have a network Id then the config is used to + * match based on SSID and security. + */ + private boolean isInfoForThisAccessPoint(WifiConfiguration config, WifiInfo info) { if (isPasspoint() == false && networkId != WifiConfiguration.INVALID_NETWORK_ID) { return networkId == info.getNetworkId(); - } else { + } else if (config != null) { + return matches(config); + } + else { // Might be an ephemeral connection with no WifiConfiguration. Try matching on SSID. // (Note that we only do this if the WifiConfiguration explicitly equals INVALID). // TODO: Handle hex string SSIDs. @@ -705,7 +712,7 @@ public class AccessPoint implements Comparable<AccessPoint> { } boolean update(ScanResult result) { - if (ssid.equals(result.SSID) && security == getSecurity(result)) { + if (matches(result)) { /* Update the LRU timestamp, if BSSID exists */ mScanResultCache.get(result.BSSID); @@ -735,9 +742,9 @@ public class AccessPoint implements Comparable<AccessPoint> { return false; } - boolean update(WifiInfo info, NetworkInfo networkInfo) { + boolean update(WifiConfiguration config, WifiInfo info, NetworkInfo networkInfo) { boolean reorder = false; - if (info != null && isInfoForThisAccessPoint(info)) { + if (info != null && isInfoForThisAccessPoint(config, info)) { reorder = (mInfo == null); mRssi = info.getRssi(); mInfo = info; diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java index 33f993e..c28288e 100644 --- a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java +++ b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java @@ -281,6 +281,19 @@ public class WifiTracker { return mScanResultCache.values(); } + private WifiConfiguration getWifiConfigurationForNetworkId(int networkId) { + final List<WifiConfiguration> configs = mWifiManager.getConfiguredNetworks(); + if (configs != null) { + for (WifiConfiguration config : configs) { + if (mLastInfo != null && networkId == config.networkId && + !(config.selfAdded && config.numAssociation == 0)) { + return config; + } + } + } + return null; + } + private void updateAccessPoints() { // Swap the current access points into a cached list. List<AccessPoint> cachedAccessPoints = getAccessPoints(); @@ -295,21 +308,21 @@ public class WifiTracker { * correct SSID. Maps SSID -> List of AccessPoints with the given SSID. */ Multimap<String, AccessPoint> apMap = new Multimap<String, AccessPoint>(); WifiConfiguration connectionConfig = null; + if (mLastInfo != null) { + connectionConfig = getWifiConfigurationForNetworkId(mLastInfo.getNetworkId()); + } final List<WifiConfiguration> configs = mWifiManager.getConfiguredNetworks(); if (configs != null) { mSavedNetworksExist = configs.size() != 0; for (WifiConfiguration config : configs) { - if (mLastInfo != null && mLastInfo.getNetworkId() == config.networkId) { - connectionConfig = config; - } if (config.selfAdded && config.numAssociation == 0) { continue; } AccessPoint accessPoint = getCachedOrCreate(config, cachedAccessPoints); if (mLastInfo != null && mLastNetworkInfo != null) { if (config.isPasspoint() == false) { - accessPoint.update(mLastInfo, mLastNetworkInfo); + accessPoint.update(connectionConfig, mLastInfo, mLastNetworkInfo); } } if (mIncludeSaved) { @@ -346,7 +359,7 @@ public class WifiTracker { if (!found && mIncludeScans) { AccessPoint accessPoint = getCachedOrCreate(result, cachedAccessPoints); if (mLastInfo != null && mLastNetworkInfo != null) { - accessPoint.update(mLastInfo, mLastNetworkInfo); + accessPoint.update(connectionConfig, mLastInfo, mLastNetworkInfo); } if (result.isPasspointNetwork()) { @@ -437,9 +450,14 @@ public class WifiTracker { mLastNetworkInfo = networkInfo; } + WifiConfiguration connectionConfig = null; + if (mLastInfo != null) { + connectionConfig = getWifiConfigurationForNetworkId(mLastInfo.getNetworkId()); + } + boolean reorder = false; for (int i = mAccessPoints.size() - 1; i >= 0; --i) { - if (mAccessPoints.get(i).update(mLastInfo, mLastNetworkInfo)) { + if (mAccessPoints.get(i).update(connectionConfig, mLastInfo, mLastNetworkInfo)) { reorder = true; } } |