diff --git a/res/values/strings.xml b/res/values/strings.xml index c3fb2f94ead..7ef7a77b34f 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -3170,6 +3170,10 @@ While docked Never + + While postured + + While postured and charging On / %1$s diff --git a/src/com/android/settings/dream/DreamSettings.java b/src/com/android/settings/dream/DreamSettings.java index 4854fc6b578..c2370617d4e 100644 --- a/src/com/android/settings/dream/DreamSettings.java +++ b/src/com/android/settings/dream/DreamSettings.java @@ -17,10 +17,6 @@ package com.android.settings.dream; import static com.android.settings.dream.DreamMainSwitchPreferenceController.MAIN_SWITCH_PREF_KEY; -import static com.android.settingslib.dream.DreamBackend.EITHER; -import static com.android.settingslib.dream.DreamBackend.NEVER; -import static com.android.settingslib.dream.DreamBackend.WHILE_CHARGING; -import static com.android.settingslib.dream.DreamBackend.WHILE_DOCKED; import android.app.settings.SettingsEnums; import android.content.Context; @@ -57,6 +53,7 @@ public class DreamSettings extends DashboardFragment implements OnCheckedChangeL static final String WHILE_CHARGING_ONLY = "while_charging_only"; static final String WHILE_DOCKED_ONLY = "while_docked_only"; static final String EITHER_CHARGING_OR_DOCKED = "either_charging_or_docked"; + static final String WHILE_POSTURED_ONLY = "while_postured_only"; static final String NEVER_DREAM = "never"; private MainSwitchPreference mMainSwitchPreference; @@ -75,26 +72,30 @@ public class DreamSettings extends DashboardFragment implements OnCheckedChangeL static int getSettingFromPrefKey(String key) { switch (key) { case WHILE_CHARGING_ONLY: - return WHILE_CHARGING; + return DreamBackend.WHILE_CHARGING; case WHILE_DOCKED_ONLY: - return WHILE_DOCKED; + return DreamBackend.WHILE_DOCKED; case EITHER_CHARGING_OR_DOCKED: - return EITHER; + return DreamBackend.WHILE_CHARGING_OR_DOCKED; + case WHILE_POSTURED_ONLY: + return DreamBackend.WHILE_POSTURED; case NEVER_DREAM: default: - return NEVER; + return DreamBackend.NEVER; } } static String getKeyFromSetting(@WhenToDream int dreamSetting) { switch (dreamSetting) { - case WHILE_CHARGING: + case DreamBackend.WHILE_CHARGING: return WHILE_CHARGING_ONLY; - case WHILE_DOCKED: + case DreamBackend.WHILE_DOCKED: return WHILE_DOCKED_ONLY; - case EITHER: + case DreamBackend.WHILE_CHARGING_OR_DOCKED: return EITHER_CHARGING_OR_DOCKED; - case NEVER: + case DreamBackend.WHILE_POSTURED: + return WHILE_POSTURED_ONLY; + case DreamBackend.NEVER: default: return NEVER_DREAM; } @@ -103,14 +104,17 @@ public class DreamSettings extends DashboardFragment implements OnCheckedChangeL static int getDreamSettingDescriptionResId(@WhenToDream int dreamSetting, boolean enabledOnBattery) { switch (dreamSetting) { - case WHILE_CHARGING: + case DreamBackend.WHILE_CHARGING: return R.string.screensaver_settings_summary_sleep; - case WHILE_DOCKED: + case DreamBackend.WHILE_DOCKED: return enabledOnBattery ? R.string.screensaver_settings_summary_dock : R.string.screensaver_settings_summary_dock_and_charging; - case EITHER: + case DreamBackend.WHILE_CHARGING_OR_DOCKED: return R.string.screensaver_settings_summary_either_long; - case NEVER: + case DreamBackend.WHILE_POSTURED: + return enabledOnBattery ? R.string.screensaver_settings_summary_postured + : R.string.screensaver_settings_summary_postured_and_charging; + case DreamBackend.NEVER: default: return R.string.screensaver_settings_summary_never; } diff --git a/src/com/android/settings/dream/WhenToDreamPicker.java b/src/com/android/settings/dream/WhenToDreamPicker.java index 3052d20ba71..b3b0c9001c2 100644 --- a/src/com/android/settings/dream/WhenToDreamPicker.java +++ b/src/com/android/settings/dream/WhenToDreamPicker.java @@ -16,6 +16,8 @@ package com.android.settings.dream; +import static android.service.dreams.Flags.allowDreamWhenPostured; + import android.app.settings.SettingsEnums; import android.content.Context; import android.graphics.drawable.Drawable; @@ -65,7 +67,11 @@ public class WhenToDreamPicker extends RadioButtonPickerFragment { } for (int i = 0; i < entries.length; i++) { - candidates.add(new WhenToDreamCandidateInfo(entries[i], values[i])); + final String key = values[i]; + if (DreamSettings.WHILE_POSTURED_ONLY.equals(key) && !allowDreamWhenPostured()) { + continue; + } + candidates.add(new WhenToDreamCandidateInfo(entries[i], key)); } return candidates; diff --git a/tests/robotests/src/com/android/settings/dream/DreamSettingsTest.java b/tests/robotests/src/com/android/settings/dream/DreamSettingsTest.java index aeb3ba042c9..e6a3f0e36b4 100644 --- a/tests/robotests/src/com/android/settings/dream/DreamSettingsTest.java +++ b/tests/robotests/src/com/android/settings/dream/DreamSettingsTest.java @@ -59,6 +59,7 @@ public class DreamSettingsTest { DreamSettings.WHILE_CHARGING_ONLY, DreamSettings.WHILE_DOCKED_ONLY, DreamSettings.EITHER_CHARGING_OR_DOCKED, + DreamSettings.WHILE_POSTURED_ONLY, DreamSettings.NEVER_DREAM ); @@ -66,7 +67,8 @@ public class DreamSettingsTest { private static final int[] SETTINGS = { DreamBackend.WHILE_CHARGING, DreamBackend.WHILE_DOCKED, - DreamBackend.EITHER, + DreamBackend.WHILE_CHARGING_OR_DOCKED, + DreamBackend.WHILE_POSTURED, DreamBackend.NEVER, }; @@ -74,6 +76,7 @@ public class DreamSettingsTest { R.string.screensaver_settings_summary_sleep, R.string.screensaver_settings_summary_dock, R.string.screensaver_settings_summary_either_long, + R.string.screensaver_settings_summary_postured, R.string.screensaver_settings_summary_never }; @@ -81,6 +84,7 @@ public class DreamSettingsTest { R.string.screensaver_settings_summary_sleep, R.string.screensaver_settings_summary_dock_and_charging, R.string.screensaver_settings_summary_either_long, + R.string.screensaver_settings_summary_postured_and_charging, R.string.screensaver_settings_summary_never }; diff --git a/tests/robotests/src/com/android/settings/dream/WhenToDreamPickerTest.java b/tests/robotests/src/com/android/settings/dream/WhenToDreamPickerTest.java index 91ec2993893..f2197e777f0 100644 --- a/tests/robotests/src/com/android/settings/dream/WhenToDreamPickerTest.java +++ b/tests/robotests/src/com/android/settings/dream/WhenToDreamPickerTest.java @@ -80,9 +80,13 @@ public class WhenToDreamPickerTest { assertThat(mPicker.getDefaultKey()) .isEqualTo(DreamSettings.getKeyFromSetting(DreamBackend.WHILE_DOCKED)); - when(mBackend.getWhenToDreamSetting()).thenReturn(DreamBackend.EITHER); + when(mBackend.getWhenToDreamSetting()).thenReturn(DreamBackend.WHILE_CHARGING_OR_DOCKED); assertThat(mPicker.getDefaultKey()) - .isEqualTo(DreamSettings.getKeyFromSetting(DreamBackend.EITHER)); + .isEqualTo(DreamSettings.getKeyFromSetting(DreamBackend.WHILE_CHARGING_OR_DOCKED)); + + when(mBackend.getWhenToDreamSetting()).thenReturn(DreamBackend.WHILE_POSTURED); + assertThat(mPicker.getDefaultKey()) + .isEqualTo(DreamSettings.getKeyFromSetting(DreamBackend.WHILE_POSTURED)); when(mBackend.getWhenToDreamSetting()).thenReturn(DreamBackend.NEVER); assertThat(mPicker.getDefaultKey()) @@ -105,9 +109,16 @@ public class WhenToDreamPickerTest { @Test public void setDreamWhileChargingOrDocked() { - final String key = DreamSettings.getKeyFromSetting(DreamBackend.EITHER); + final String key = DreamSettings.getKeyFromSetting(DreamBackend.WHILE_CHARGING_OR_DOCKED); mPicker.setDefaultKey(key); - verify(mBackend).setWhenToDream(DreamBackend.EITHER); + verify(mBackend).setWhenToDream(DreamBackend.WHILE_CHARGING_OR_DOCKED); + } + + @Test + public void setDreamWhilePostured() { + final String key = DreamSettings.getKeyFromSetting(DreamBackend.WHILE_POSTURED); + mPicker.setDefaultKey(key); + verify(mBackend).setWhenToDream(DreamBackend.WHILE_POSTURED); } @Test