Merge "Update Passpoint R1 AccessPoint with R2 config" into qt-dev
diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java
index 02bcc09..baa3544 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 @@
      * 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 d8172a0..49c8ce3 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 @@
         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 683ec8b..7fac812 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 @@
 
     private List<Pair<WifiConfiguration, Map<Integer, List<ScanResult>>>>
             createPasspointMatchingWifiConfigWithScanResults(
-            List<ScanResult> homeList, List<ScanResult> roamingList) {
+            List<ScanResult> homeList, List<ScanResult> roamingList,
+            String fqdn, String friendlyName) {
         List<Pair<WifiConfiguration, Map<Integer, List<ScanResult>>>> matchingList =
                 new ArrayList<>();
         Map<Integer, List<ScanResult>> mapping = new HashMap<>();
@@ -326,7 +327,7 @@
             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 @@
 
         List<AccessPoint> passpointAccessPointsFirstUpdate = tracker.updatePasspointAccessPoints(
                 createPasspointMatchingWifiConfigWithScanResults(Arrays.asList(result),
-                        null), new ArrayList<>());
+                        null, FQDN_1, PROVIDER_FRIENDLY_NAME_1), new ArrayList<>());
         List<AccessPoint> cachedAccessPoints = new ArrayList<>(passpointAccessPointsFirstUpdate);
 
         int prevRssi = result.level;
@@ -1086,7 +1087,7 @@
 
         List<AccessPoint> 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))
@@ -1097,6 +1098,28 @@
     }
 
     /**
+     * Verifies that the internal WifiConfiguration of a Passpoint AccessPoint is updated
+     */
+    @Test
+    public void updatePasspointAccessPoints_updatesConfig() {
+        WifiTracker tracker = createMockedWifiTracker();
+
+        ScanResult result = buildScanResult1();
+
+        List<AccessPoint> 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.
      */