Loading src/com/android/settings/wifi/savedaccesspoints2/SavedAccessPointsPreferenceController2.java +27 −5 Original line number Original line Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.settings.wifi.savedaccesspoints2; package com.android.settings.wifi.savedaccesspoints2; import android.content.Context; import android.content.Context; import android.text.TextUtils; import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; import androidx.preference.Preference; Loading Loading @@ -83,9 +84,29 @@ public class SavedAccessPointsPreferenceController2 extends BasePreferenceContro return false; return false; } } /** * mPreferenceGroup is not in a RecyclerView. To keep TalkBack focus, this method should not * mPreferenceGroup.removeAll() then mPreferenceGroup.addPreference for mWifiEntries. */ private void updatePreference() { private void updatePreference() { mPreferenceGroup.removeAll(); // Remove the Preference of removed WifiEntry. final List<String> removedPreferenceKeys = new ArrayList<>(); final int preferenceCount = mPreferenceGroup.getPreferenceCount(); for (int i = 0; i < preferenceCount; i++) { final String key = mPreferenceGroup.getPreference(i).getKey(); if (mWifiEntries.stream().filter(wifiEntry -> TextUtils.equals(key, wifiEntry.getKey())).count() == 0) { removedPreferenceKeys.add(key); } } for (String removedPreferenceKey : removedPreferenceKeys) { mPreferenceGroup.removePreference( mPreferenceGroup.findPreference(removedPreferenceKey)); } // Add the Preference of new added WifiEntry. for (WifiEntry wifiEntry : mWifiEntries) { for (WifiEntry wifiEntry : mWifiEntries) { if (mPreferenceGroup.findPreference(wifiEntry.getKey()) == null) { final WifiEntryPreference preference = new WifiEntryPreference(mContext, wifiEntry); final WifiEntryPreference preference = new WifiEntryPreference(mContext, wifiEntry); preference.setKey(wifiEntry.getKey()); preference.setKey(wifiEntry.getKey()); preference.setOnPreferenceClickListener(this); preference.setOnPreferenceClickListener(this); Loading @@ -94,3 +115,4 @@ public class SavedAccessPointsPreferenceController2 extends BasePreferenceContro } } } } } } } tests/robotests/src/com/android/settings/wifi/savedaccesspoints2/SavedAccessPointsPreferenceController2Test.java +16 −0 Original line number Original line Diff line number Diff line Loading @@ -103,4 +103,20 @@ public class SavedAccessPointsPreferenceController2Test { assertThat(prefs.size()).isEqualTo(1); assertThat(prefs.size()).isEqualTo(1); assertThat(prefs.get(0).getTitle()).isEqualTo(title); assertThat(prefs.get(0).getTitle()).isEqualTo(title); } } @Test public void displayPreference_noAccessPoint_shouldRemoveIt() { final String title = "ssid_title"; final String key = "key"; final WifiEntry mockWifiEntry = mock(WifiEntry.class); when(mockWifiEntry.getTitle()).thenReturn(title); when(mockWifiEntry.getKey()).thenReturn(key); final WifiEntryPreference preference = new WifiEntryPreference(mContext, mockWifiEntry); preference.setKey(key); mPreferenceCategory.addPreference(preference); mController.displayPreference(mPreferenceScreen, new ArrayList<>()); assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(0); } } } Loading
src/com/android/settings/wifi/savedaccesspoints2/SavedAccessPointsPreferenceController2.java +27 −5 Original line number Original line Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.settings.wifi.savedaccesspoints2; package com.android.settings.wifi.savedaccesspoints2; import android.content.Context; import android.content.Context; import android.text.TextUtils; import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; import androidx.preference.Preference; Loading Loading @@ -83,9 +84,29 @@ public class SavedAccessPointsPreferenceController2 extends BasePreferenceContro return false; return false; } } /** * mPreferenceGroup is not in a RecyclerView. To keep TalkBack focus, this method should not * mPreferenceGroup.removeAll() then mPreferenceGroup.addPreference for mWifiEntries. */ private void updatePreference() { private void updatePreference() { mPreferenceGroup.removeAll(); // Remove the Preference of removed WifiEntry. final List<String> removedPreferenceKeys = new ArrayList<>(); final int preferenceCount = mPreferenceGroup.getPreferenceCount(); for (int i = 0; i < preferenceCount; i++) { final String key = mPreferenceGroup.getPreference(i).getKey(); if (mWifiEntries.stream().filter(wifiEntry -> TextUtils.equals(key, wifiEntry.getKey())).count() == 0) { removedPreferenceKeys.add(key); } } for (String removedPreferenceKey : removedPreferenceKeys) { mPreferenceGroup.removePreference( mPreferenceGroup.findPreference(removedPreferenceKey)); } // Add the Preference of new added WifiEntry. for (WifiEntry wifiEntry : mWifiEntries) { for (WifiEntry wifiEntry : mWifiEntries) { if (mPreferenceGroup.findPreference(wifiEntry.getKey()) == null) { final WifiEntryPreference preference = new WifiEntryPreference(mContext, wifiEntry); final WifiEntryPreference preference = new WifiEntryPreference(mContext, wifiEntry); preference.setKey(wifiEntry.getKey()); preference.setKey(wifiEntry.getKey()); preference.setOnPreferenceClickListener(this); preference.setOnPreferenceClickListener(this); Loading @@ -94,3 +115,4 @@ public class SavedAccessPointsPreferenceController2 extends BasePreferenceContro } } } } } } }
tests/robotests/src/com/android/settings/wifi/savedaccesspoints2/SavedAccessPointsPreferenceController2Test.java +16 −0 Original line number Original line Diff line number Diff line Loading @@ -103,4 +103,20 @@ public class SavedAccessPointsPreferenceController2Test { assertThat(prefs.size()).isEqualTo(1); assertThat(prefs.size()).isEqualTo(1); assertThat(prefs.get(0).getTitle()).isEqualTo(title); assertThat(prefs.get(0).getTitle()).isEqualTo(title); } } @Test public void displayPreference_noAccessPoint_shouldRemoveIt() { final String title = "ssid_title"; final String key = "key"; final WifiEntry mockWifiEntry = mock(WifiEntry.class); when(mockWifiEntry.getTitle()).thenReturn(title); when(mockWifiEntry.getKey()).thenReturn(key); final WifiEntryPreference preference = new WifiEntryPreference(mContext, mockWifiEntry); preference.setKey(key); mPreferenceCategory.addPreference(preference); mController.displayPreference(mPreferenceScreen, new ArrayList<>()); assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(0); } } }