diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java index 02bcc099a70d7..baa3544bd3fd3 100644 --- a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java +++ b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java @@ -1111,7 +1111,7 @@ public class AccessPoint implements Comparable { * Return true if this AccessPoint represents a Passpoint provider configuration. */ public boolean isPasspointConfig() { - return mFqdn != null; + return mFqdn != null && mConfig == null; } /** diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java index d8172a0f94303..49c8ce32658b7 100644 --- a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java +++ b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java @@ -718,6 +718,7 @@ public class WifiTracker implements LifecycleObserver, OnStart, OnStop, OnDestro if (accessPoint == null) { accessPoint = new AccessPoint(mContext, config, homeScans, roamingScans); } else { + accessPoint.update(config); accessPoint.setScanResultsPasspoint(homeScans, roamingScans); } return accessPoint; diff --git a/packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/WifiTrackerTest.java b/packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/WifiTrackerTest.java index 683ec8bb5a6c7..7fac81211dc1b 100644 --- a/packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/WifiTrackerTest.java +++ b/packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/WifiTrackerTest.java @@ -314,7 +314,8 @@ public class WifiTrackerTest { private List>>> createPasspointMatchingWifiConfigWithScanResults( - List homeList, List roamingList) { + List homeList, List roamingList, + String fqdn, String friendlyName) { List>>> matchingList = new ArrayList<>(); Map> mapping = new HashMap<>(); @@ -326,7 +327,7 @@ public class WifiTrackerTest { mapping.put(WifiManager.PASSPOINT_ROAMING_NETWORK, roamingList); } - matchingList.add(new Pair(buildPasspointConfiguration(FQDN_1, PROVIDER_FRIENDLY_NAME_1), + matchingList.add(new Pair(buildPasspointConfiguration(fqdn, friendlyName), mapping)); return matchingList; @@ -1077,7 +1078,7 @@ public class WifiTrackerTest { List passpointAccessPointsFirstUpdate = tracker.updatePasspointAccessPoints( createPasspointMatchingWifiConfigWithScanResults(Arrays.asList(result), - null), new ArrayList<>()); + null, FQDN_1, PROVIDER_FRIENDLY_NAME_1), new ArrayList<>()); List cachedAccessPoints = new ArrayList<>(passpointAccessPointsFirstUpdate); int prevRssi = result.level; @@ -1086,7 +1087,7 @@ public class WifiTrackerTest { List passpointAccessPointsSecondUpdate = tracker.updatePasspointAccessPoints( createPasspointMatchingWifiConfigWithScanResults(Arrays.asList(result), - null), cachedAccessPoints); + null, FQDN_1, PROVIDER_FRIENDLY_NAME_1), cachedAccessPoints); // Verify second update AP is the same object as the first update AP assertThat(passpointAccessPointsFirstUpdate.get(0)) @@ -1096,6 +1097,28 @@ public class WifiTrackerTest { .isEqualTo((prevRssi + newRssi) / 2); } + /** + * Verifies that the internal WifiConfiguration of a Passpoint AccessPoint is updated + */ + @Test + public void updatePasspointAccessPoints_updatesConfig() { + WifiTracker tracker = createMockedWifiTracker(); + + ScanResult result = buildScanResult1(); + + List passpointAccessPoints = tracker.updatePasspointAccessPoints( + createPasspointMatchingWifiConfigWithScanResults(Arrays.asList(result), + null, FQDN_1, PROVIDER_FRIENDLY_NAME_1), new ArrayList<>()); + + AccessPoint ap = passpointAccessPoints.get(0); + assertEquals(ap.getTitle(), PROVIDER_FRIENDLY_NAME_1); + + tracker.updatePasspointAccessPoints( + createPasspointMatchingWifiConfigWithScanResults(Arrays.asList(result), + null, FQDN_1, PROVIDER_FRIENDLY_NAME_2), passpointAccessPoints); + assertEquals(ap.getTitle(), PROVIDER_FRIENDLY_NAME_2); + } + /** * Verifies that updateOsuAccessPoints will only return AccessPoints whose * isOsuProvider() evaluates as true.