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: I9cfdae8207ae919e9e1cbf4c200eaa951a229b3f
Merged-In: I48ac11364b06887cc4059bcda863b456e206c9bd
This commit is contained in:
Quang Luong
2020-05-20 16:33:31 -07:00
committed by Arc Wang
parent f78e7f5976
commit e9cbf1b698

View File

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