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());