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