Changed ExtraSettingsPreferenceController's way of reading metadata
boolean. Fixed flaky unit test.

Previous way of reading the xml metadata is incorrect. If the key does
not exist, the metadata will return a string. If the key exists, the
metadata will return a boolean. So this code needs to be updated so it
accounts for both.

Bug: 148946454
Test: Robolectric, manual
Change-Id: Ic16667632bc146f53a42cad0bbec8a130c82c7f1
Merged-In: Ic16667632bc146f53a42cad0bbec8a130c82c7f1
diff --git a/src/com/android/car/settings/common/ExtraSettingsPreferenceController.java b/src/com/android/car/settings/common/ExtraSettingsPreferenceController.java
index 6dd14fd..1c7e687 100644
--- a/src/com/android/car/settings/common/ExtraSettingsPreferenceController.java
+++ b/src/com/android/car/settings/common/ExtraSettingsPreferenceController.java
@@ -53,8 +53,6 @@
 
     @VisibleForTesting
     static final String META_DATA_DISTRACTION_OPTIMIZED = "distractionOptimized";
-    @VisibleForTesting static final String META_DATA_FALSE = "false";
-    @VisibleForTesting static final String META_DATA_TRUE = "true";
 
     private ExtraSettingsLoader mExtraSettingsLoader;
     private boolean mSettingsLoaded;
@@ -116,10 +114,11 @@
     protected void addExtraSettings(Map<Preference, Bundle> preferenceBundleMap) {
         for (Preference setting : preferenceBundleMap.keySet()) {
             Bundle metaData = preferenceBundleMap.get(setting);
-            boolean distractionOptimized = metaData.getString(
-                    META_DATA_DISTRACTION_OPTIMIZED,
-                    META_DATA_FALSE
-            ).equals(META_DATA_TRUE);
+            boolean distractionOptimized = false;
+            if (metaData.containsKey(META_DATA_DISTRACTION_OPTIMIZED)) {
+                distractionOptimized =
+                        metaData.getBoolean(META_DATA_DISTRACTION_OPTIMIZED);
+            }
             setting.getExtras().putBoolean(META_DATA_DISTRACTION_OPTIMIZED, distractionOptimized);
             getPreference().addPreference(setting);
         }
diff --git a/tests/robotests/src/com/android/car/settings/applications/ApplicationDetailsFragmentTest.java b/tests/robotests/src/com/android/car/settings/applications/ApplicationDetailsFragmentTest.java
index 614bdaa..e6ef85c 100644
--- a/tests/robotests/src/com/android/car/settings/applications/ApplicationDetailsFragmentTest.java
+++ b/tests/robotests/src/com/android/car/settings/applications/ApplicationDetailsFragmentTest.java
@@ -64,6 +64,7 @@
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
+import org.robolectric.Robolectric;
 import org.robolectric.RuntimeEnvironment;
 import org.robolectric.android.controller.ActivityController;
 import org.robolectric.annotation.Config;
@@ -514,6 +515,7 @@
         AlertDialog dialog = ShadowAlertDialog.getLatestAlertDialog();
 
         dialog.getButton(AlertDialog.BUTTON_POSITIVE).performClick();
+        Robolectric.flushForegroundThreadScheduler();
 
         assertThat(
                 mContext.getPackageManager().getApplicationEnabledSetting(PACKAGE_NAME)).isEqualTo(
diff --git a/tests/robotests/src/com/android/car/settings/common/ExtraSettingsPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/common/ExtraSettingsPreferenceControllerTest.java
index 8c19a8c..045fb63 100644
--- a/tests/robotests/src/com/android/car/settings/common/ExtraSettingsPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/common/ExtraSettingsPreferenceControllerTest.java
@@ -185,10 +185,8 @@
 
     @Test
     public void onUxRestrictionsChanged_unrestrictedAndDO_intentsIntoNonDOActivity_disabled() {
-        mBundle.putString(
-                ExtraSettingsPreferenceController.META_DATA_DISTRACTION_OPTIMIZED,
-                ExtraSettingsPreferenceController.META_DATA_FALSE
-        );
+        mBundle.putBoolean(
+                ExtraSettingsPreferenceController.META_DATA_DISTRACTION_OPTIMIZED, false);
         when(mExtraSettingsLoaderMock.loadPreferences(FAKE_INTENT)).thenReturn(
                 mPreferenceBundleMap);
         mController.setExtraSettingsLoader(mExtraSettingsLoaderMock);
@@ -202,10 +200,8 @@
 
     @Test
     public void onUxRestrictionsChanged_unrestrictedAndDO_intentsIntoDOActivity_enabled() {
-        mBundle.putString(
-                ExtraSettingsPreferenceController.META_DATA_DISTRACTION_OPTIMIZED,
-                ExtraSettingsPreferenceController.META_DATA_TRUE
-        );
+        mBundle.putBoolean(
+                ExtraSettingsPreferenceController.META_DATA_DISTRACTION_OPTIMIZED, true);
         when(mExtraSettingsLoaderMock.loadPreferences(FAKE_INTENT)).thenReturn(
                 mPreferenceBundleMap);
         mController.setExtraSettingsLoader(mExtraSettingsLoaderMock);