Create new WifiEntryPreference if WifiEntry object changes

WifiSettings2 should create a new WifiEntryPreference for a cached
WifiEntry key in case the underlying object has changed, so that updates
to the WifiEntry are still being listened to. This may happen
in situations where WifiPickerTracker swaps WifiEntries objects with the same
key in the getWifiEntries() list, such as when handling network
suggestions (which are kept as separate objects from the non-suggestion
entries).

Bug: 157174114
Test: manual visual verification in wifi picker of adding a network
suggestion and seeing the entry summary for that SSID change to the
suggestion summary.

Change-Id: I48ac11364b06887cc4059bcda863b456e206c9bd
This commit is contained in:
Arc Wang
2020-05-21 09:21:48 +08:00
parent 05cc1e7076
commit 2547d0617c

View File

@@ -763,8 +763,13 @@ public class WifiSettings extends RestrictedSettingsFragment
LongPressWifiEntryPreference pref = LongPressWifiEntryPreference pref =
(LongPressWifiEntryPreference) getCachedPreference(key); (LongPressWifiEntryPreference) getCachedPreference(key);
if (pref != null) { if (pref != null) {
if (pref.getWifiEntry() == wifiEntry) {
pref.setOrder(index++); pref.setOrder(index++);
continue; continue;
} else {
// Create a new preference if the underlying WifiEntry object has changed
removePreference(key);
}
} }
pref = createLongPressWifiEntryPreference(wifiEntry); pref = createLongPressWifiEntryPreference(wifiEntry);