summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Quang Luong <qal@google.com> 2019-03-07 14:52:55 -0800
committer Quang Luong <qal@google.com> 2019-03-07 15:26:44 -0800
commit6e711c80ffaf97eb68066394ee730855519e5f9b (patch)
tree333de7ea7a85e62fc4649ec6ded1f9ef5d3e31f9
parentf554792c8d7c7aec953d9b31e088e72d639fd93a (diff)
Removed duplicate Passpoint entries in saved networks page
The AccessPoint constructor for PasspointConfigurations was not setting the AccessPoint key. This caused the Saved Networks Page to not be able to correctly reference the entries for saved Passpoint networks, causing entries to not disappear after clicking "forget", or creating duplicate entries whenever the activity was resumed. Fixing the key updating/getting for PasspointConfigurations solves this issue. Bug: 118705403 Test: atest AccessPointTest Change-Id: I0e49192ef5efa72fd490e4a0ac987e1c0682e3f3
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java18
-rw-r--r--packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/AccessPointTest.java8
2 files changed, 22 insertions, 4 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java
index 4fc62bb3937f..90aef1c51c23 100644
--- a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java
+++ b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java
@@ -307,6 +307,7 @@ public class AccessPoint implements Comparable<AccessPoint> {
public AccessPoint(Context context, WifiConfiguration config) {
mContext = context;
loadConfig(config);
+ updateKey();
}
/**
@@ -317,6 +318,7 @@ public class AccessPoint implements Comparable<AccessPoint> {
mContext = context;
mFqdn = config.getHomeSp().getFqdn();
mProviderFriendlyName = config.getHomeSp().getFriendlyName();
+ updateKey();
}
/**
@@ -355,7 +357,6 @@ public class AccessPoint implements Comparable<AccessPoint> {
security = getSecurity(config);
networkId = config.networkId;
mConfig = config;
- updateKey();
}
/** Updates {@link #mKey} and should only called upon object creation/initialization. */
@@ -363,6 +364,8 @@ public class AccessPoint implements Comparable<AccessPoint> {
// TODO(sghuman): Consolidate Key logic on ScanResultMatchInfo
if (isPasspoint()) {
mKey = getKey(mConfig);
+ } else if (isPasspointConfig()) {
+ mKey = getKey(mFqdn);
} else if (isOsuProvider()) {
mKey = getKey(mOsuProvider);
} else { // Non-Passpoint AP
@@ -618,15 +621,22 @@ public class AccessPoint implements Comparable<AccessPoint> {
*/
public static String getKey(WifiConfiguration config) {
if (config.isPasspoint()) {
- return new StringBuilder()
- .append(KEY_PREFIX_FQDN)
- .append(config.FQDN).toString();
+ return getKey(config.FQDN);
} else {
return getKey(removeDoubleQuotes(config.SSID), config.BSSID, getSecurity(config));
}
}
/**
+ * Returns the AccessPoint key corresponding to a Passpoint network by its FQDN.
+ */
+ public static String getKey(String fqdn) {
+ return new StringBuilder()
+ .append(KEY_PREFIX_FQDN)
+ .append(fqdn).toString();
+ }
+
+ /**
* Returns the AccessPoint key corresponding to the OsuProvider.
*/
public static String getKey(OsuProvider provider) {
diff --git a/packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/AccessPointTest.java b/packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/AccessPointTest.java
index 06f5fde9c92b..783c7adce558 100644
--- a/packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/AccessPointTest.java
+++ b/packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/AccessPointTest.java
@@ -1250,6 +1250,14 @@ public class AccessPointTest {
AccessPoint passpointAp = new AccessPoint(mContext, spyConfig, mScanResults, null);
assertThat(passpointAp.getKey()).isEqualTo(AccessPoint.getKey(spyConfig));
+ PasspointConfiguration passpointConfig = new PasspointConfiguration();
+ HomeSp homeSp = new HomeSp();
+ homeSp.setFqdn("fqdn");
+ homeSp.setFriendlyName("Test Provider");
+ passpointConfig.setHomeSp(homeSp);
+ AccessPoint passpointConfigAp = new AccessPoint(mContext, passpointConfig);
+ assertThat(passpointConfigAp.getKey()).isEqualTo(AccessPoint.getKey("fqdn"));
+
OsuProvider provider = createOsuProvider();
AccessPoint osuAp = new AccessPoint(mContext, provider, mScanResults);
assertThat(osuAp.getKey()).isEqualTo(AccessPoint.getKey(provider));