Updated LocationServicesPreferenceController to update preferences on
updateState instead of during onCreate.
Bug: 148854951
Test: Robolectric, manual
Change-Id: Ic7c3f0e72633d878ee487ace91f785e7870959fc
diff --git a/src/com/android/car/settings/location/LocationServicesPreferenceController.java b/src/com/android/car/settings/location/LocationServicesPreferenceController.java
index b17fb20..1c9b04a 100644
--- a/src/com/android/car/settings/location/LocationServicesPreferenceController.java
+++ b/src/com/android/car/settings/location/LocationServicesPreferenceController.java
@@ -70,15 +70,6 @@
return PreferenceGroup.class;
}
- @Override
- protected void onCreateInternal() {
- int profileId = UserHandle.USER_CURRENT;
- List<Preference> injectedSettings = getSortedInjectedPreferences(profileId);
- for (Preference preference : injectedSettings) {
- getPreference().addPreference(preference);
- }
- }
-
/**
* Called when the controller is started.
*/
@@ -97,6 +88,11 @@
@Override
protected void updateState(PreferenceGroup preferenceGroup) {
+ getPreference().removeAll();
+ List<Preference> injectedSettings = getSortedInjectedPreferences(UserHandle.USER_CURRENT);
+ for (Preference preference : injectedSettings) {
+ getPreference().addPreference(preference);
+ }
preferenceGroup.setVisible(preferenceGroup.getPreferenceCount() > 0);
}
diff --git a/tests/robotests/src/com/android/car/settings/location/LocationServicesPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/location/LocationServicesPreferenceControllerTest.java
index 65e8527..3efe1ca 100644
--- a/tests/robotests/src/com/android/car/settings/location/LocationServicesPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/location/LocationServicesPreferenceControllerTest.java
@@ -74,16 +74,6 @@
}
@Test
- public void onCreate_addsInjectedSettingsToPreferenceCategory() {
- Map<Integer, List<Preference>> samplePrefs = getSamplePreferences();
- doReturn(samplePrefs).when(mSettingsInjector)
- .getInjectedSettings(any(Context.class), anyInt());
- mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-
- assertThat(mCategory.getPreferenceCount()).isEqualTo(samplePrefs.get(PROFILE_ID).size());
- }
-
- @Test
public void onStart_registersBroadcastReceiver() {
mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
mContext.sendBroadcast(new Intent(SettingInjectorService.ACTION_INJECTED_SETTING_CHANGED));
@@ -103,6 +93,32 @@
}
@Test
+ public void updateState_addsInjectedSettingsToPreferenceCategory() {
+ mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+ Map<Integer, List<Preference>> samplePrefs = getSamplePreferences();
+ doReturn(samplePrefs).when(mSettingsInjector)
+ .getInjectedSettings(any(Context.class), anyInt());
+
+ mController.updateState(mCategory);
+
+ assertThat(mCategory.getPreferenceCount()).isEqualTo(samplePrefs.get(PROFILE_ID).size());
+ }
+
+ @Test
+ public void updateState_updatesPreferenceSummary() {
+ Map<Integer, List<Preference>> samplePrefs = getSamplePreferences();
+ doReturn(samplePrefs).when(mSettingsInjector)
+ .getInjectedSettings(any(Context.class), anyInt());
+ mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+ String summary = "Summary";
+ samplePrefs.get(PROFILE_ID).get(0).setSummary(summary);
+
+ mController.updateState(mCategory);
+
+ assertThat(mCategory.getPreference(0).getSummary()).isEqualTo(summary);
+ }
+
+ @Test
public void preferenceCategory_isVisibleIfThereAreInjectedSettings() {
doReturn(getSamplePreferences()).when(mSettingsInjector)
.getInjectedSettings(any(Context.class), anyInt());