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