Loading packages/SettingsLib/src/com/android/settingslib/dream/DreamBackend.java +60 −5 Original line number Diff line number Diff line Loading @@ -340,16 +340,50 @@ public class DreamBackend { @WhenToDream public int getWhenToDreamSetting() { return isActivatedOnDock() && isActivatedOnSleep() ? WHILE_CHARGING_OR_DOCKED : isActivatedOnSleep() ? WHILE_CHARGING : isActivatedOnDock() ? WHILE_DOCKED : isActivatedOnPostured() ? WHILE_POSTURED return getWhenToDreamSetting(false); } /** * Returns the default when to dream setting. */ @WhenToDream public int getDefaultWhenToDreamSetting() { return getWhenToDreamSetting(true); } /** * Retrieves when to dream setting. * @param defaultOnly Retrieve default value only. */ @WhenToDream @VisibleForTesting private int getWhenToDreamSetting(boolean defaultOnly) { final boolean isActivatedOnDock = defaultOnly ? mDreamsActivatedOnDockByDefault : isActivatedOnDock(); final boolean isActivatedOnSleep = defaultOnly ? mDreamsActivatedOnSleepByDefault : isActivatedOnSleep(); final boolean isActivatedOnPostured = defaultOnly ? mDreamsActivatedOnPosturedByDefault : isActivatedOnPostured(); return isActivatedOnDock && isActivatedOnSleep ? WHILE_CHARGING_OR_DOCKED : isActivatedOnSleep ? WHILE_CHARGING : isActivatedOnDock ? WHILE_DOCKED : isActivatedOnPostured ? WHILE_POSTURED : NEVER; } public void setWhenToDream(@WhenToDream int whenToDream) { setEnabled(whenToDream != NEVER); updateWhenToDream(whenToDream); logDreamSettingChangeToStatsd(DS_TYPE_WHEN_TO_DREAM); } /** * Allows when to dream to be toggled without changing the enabled status or logging. */ private void updateWhenToDream(@WhenToDream int whenToDream) { switch (whenToDream) { case WHILE_CHARGING: setActivatedOnDock(false); Loading Loading @@ -379,8 +413,29 @@ public class DreamBackend { default: break; } } logDreamSettingChangeToStatsd(DS_TYPE_WHEN_TO_DREAM); /** * Updates set whenToDream setting to be within the given option set. * @param availableOptions the available whenToDream settings options */ public void resolveMissingWhenToDream(int[] availableOptions) { final int current = getWhenToDreamSetting(); // If selected option is available, exit early. if (Arrays.stream(availableOptions).anyMatch(option ->option == current)) { return; } // Turn off dreams setEnabled(false); final int defaultOption = getDefaultWhenToDreamSetting(); // set to default value if available. if (Arrays.stream(availableOptions).anyMatch(option ->option == defaultOption)) { updateWhenToDream(defaultOption); } } /** Gets all complications which have been enabled by the user. */ Loading packages/SettingsLib/tests/robotests/src/com/android/settingslib/dream/DreamBackendTest.java +33 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,8 @@ import static android.service.dreams.Flags.FLAG_ALLOW_DREAM_WHEN_POSTURED; import static com.android.settingslib.dream.DreamBackend.COMPLICATION_TYPE_DATE; import static com.android.settingslib.dream.DreamBackend.COMPLICATION_TYPE_HOME_CONTROLS; import static com.android.settingslib.dream.DreamBackend.COMPLICATION_TYPE_TIME; import static com.android.settingslib.dream.DreamBackend.WHILE_CHARGING; import static com.android.settingslib.dream.DreamBackend.WHILE_CHARGING_OR_DOCKED; import static com.google.common.truth.Truth.assertThat; Loading Loading @@ -81,6 +83,13 @@ public final class DreamBackendTest { when(res.getStringArray( com.android.internal.R.array.config_loggable_dream_prefixes)).thenReturn( new String[]{}); when(res.getBoolean(com.android.internal.R.bool.config_dreamsActivatedOnSleepByDefault )).thenReturn(true); when(res.getBoolean(com.android.internal.R.bool.config_dreamsActivatedOnDockByDefault )).thenReturn(false); when(res.getBoolean(com.android.internal.R.bool.config_dreamsActivatedOnPosturedByDefault )).thenReturn(false); mBackend = new DreamBackend(mContext); } Loading Loading @@ -115,6 +124,25 @@ public final class DreamBackendTest { assertThat(mBackend.getComplicationsEnabled()).isFalse(); } @Test public void testResolveMissingWhenToStartOption() { mBackend.setWhenToDream(WHILE_CHARGING_OR_DOCKED); mBackend.setEnabled(true); assertThat(mBackend.getDefaultWhenToDreamSetting()).isEqualTo(WHILE_CHARGING); mBackend.resolveMissingWhenToDream(new int[]{WHILE_CHARGING}); assertThat(mBackend.getWhenToDreamSetting()).isEqualTo(WHILE_CHARGING); assertThat(mBackend.isEnabled()).isFalse(); } @Test public void testResolveMissingWhenToStartOptionWhenCompliant() { mBackend.setWhenToDream(WHILE_CHARGING_OR_DOCKED); mBackend.setEnabled(true); mBackend.resolveMissingWhenToDream(new int[]{WHILE_CHARGING, WHILE_CHARGING_OR_DOCKED}); assertThat(mBackend.getWhenToDreamSetting()).isEqualTo(WHILE_CHARGING_OR_DOCKED); assertThat(mBackend.isEnabled()).isTrue(); } @Test public void testHomeControlsDisabled_ComplicationsEnabled() { setControlsEnabledOnLockscreen(true); Loading Loading @@ -218,6 +246,11 @@ public final class DreamBackendTest { Settings.Secure.SCREENSAVER_ACTIVATE_ON_POSTURED, 1 ); Settings.Secure.putInt( mContext.getContentResolver(), Settings.Secure.SCREENSAVER_ACTIVATE_ON_SLEEP, 0 ); Settings.Secure.putInt( mContext.getContentResolver(), Settings.Secure.SCREENSAVER_ACTIVATE_ON_DOCK, Loading Loading
packages/SettingsLib/src/com/android/settingslib/dream/DreamBackend.java +60 −5 Original line number Diff line number Diff line Loading @@ -340,16 +340,50 @@ public class DreamBackend { @WhenToDream public int getWhenToDreamSetting() { return isActivatedOnDock() && isActivatedOnSleep() ? WHILE_CHARGING_OR_DOCKED : isActivatedOnSleep() ? WHILE_CHARGING : isActivatedOnDock() ? WHILE_DOCKED : isActivatedOnPostured() ? WHILE_POSTURED return getWhenToDreamSetting(false); } /** * Returns the default when to dream setting. */ @WhenToDream public int getDefaultWhenToDreamSetting() { return getWhenToDreamSetting(true); } /** * Retrieves when to dream setting. * @param defaultOnly Retrieve default value only. */ @WhenToDream @VisibleForTesting private int getWhenToDreamSetting(boolean defaultOnly) { final boolean isActivatedOnDock = defaultOnly ? mDreamsActivatedOnDockByDefault : isActivatedOnDock(); final boolean isActivatedOnSleep = defaultOnly ? mDreamsActivatedOnSleepByDefault : isActivatedOnSleep(); final boolean isActivatedOnPostured = defaultOnly ? mDreamsActivatedOnPosturedByDefault : isActivatedOnPostured(); return isActivatedOnDock && isActivatedOnSleep ? WHILE_CHARGING_OR_DOCKED : isActivatedOnSleep ? WHILE_CHARGING : isActivatedOnDock ? WHILE_DOCKED : isActivatedOnPostured ? WHILE_POSTURED : NEVER; } public void setWhenToDream(@WhenToDream int whenToDream) { setEnabled(whenToDream != NEVER); updateWhenToDream(whenToDream); logDreamSettingChangeToStatsd(DS_TYPE_WHEN_TO_DREAM); } /** * Allows when to dream to be toggled without changing the enabled status or logging. */ private void updateWhenToDream(@WhenToDream int whenToDream) { switch (whenToDream) { case WHILE_CHARGING: setActivatedOnDock(false); Loading Loading @@ -379,8 +413,29 @@ public class DreamBackend { default: break; } } logDreamSettingChangeToStatsd(DS_TYPE_WHEN_TO_DREAM); /** * Updates set whenToDream setting to be within the given option set. * @param availableOptions the available whenToDream settings options */ public void resolveMissingWhenToDream(int[] availableOptions) { final int current = getWhenToDreamSetting(); // If selected option is available, exit early. if (Arrays.stream(availableOptions).anyMatch(option ->option == current)) { return; } // Turn off dreams setEnabled(false); final int defaultOption = getDefaultWhenToDreamSetting(); // set to default value if available. if (Arrays.stream(availableOptions).anyMatch(option ->option == defaultOption)) { updateWhenToDream(defaultOption); } } /** Gets all complications which have been enabled by the user. */ Loading
packages/SettingsLib/tests/robotests/src/com/android/settingslib/dream/DreamBackendTest.java +33 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,8 @@ import static android.service.dreams.Flags.FLAG_ALLOW_DREAM_WHEN_POSTURED; import static com.android.settingslib.dream.DreamBackend.COMPLICATION_TYPE_DATE; import static com.android.settingslib.dream.DreamBackend.COMPLICATION_TYPE_HOME_CONTROLS; import static com.android.settingslib.dream.DreamBackend.COMPLICATION_TYPE_TIME; import static com.android.settingslib.dream.DreamBackend.WHILE_CHARGING; import static com.android.settingslib.dream.DreamBackend.WHILE_CHARGING_OR_DOCKED; import static com.google.common.truth.Truth.assertThat; Loading Loading @@ -81,6 +83,13 @@ public final class DreamBackendTest { when(res.getStringArray( com.android.internal.R.array.config_loggable_dream_prefixes)).thenReturn( new String[]{}); when(res.getBoolean(com.android.internal.R.bool.config_dreamsActivatedOnSleepByDefault )).thenReturn(true); when(res.getBoolean(com.android.internal.R.bool.config_dreamsActivatedOnDockByDefault )).thenReturn(false); when(res.getBoolean(com.android.internal.R.bool.config_dreamsActivatedOnPosturedByDefault )).thenReturn(false); mBackend = new DreamBackend(mContext); } Loading Loading @@ -115,6 +124,25 @@ public final class DreamBackendTest { assertThat(mBackend.getComplicationsEnabled()).isFalse(); } @Test public void testResolveMissingWhenToStartOption() { mBackend.setWhenToDream(WHILE_CHARGING_OR_DOCKED); mBackend.setEnabled(true); assertThat(mBackend.getDefaultWhenToDreamSetting()).isEqualTo(WHILE_CHARGING); mBackend.resolveMissingWhenToDream(new int[]{WHILE_CHARGING}); assertThat(mBackend.getWhenToDreamSetting()).isEqualTo(WHILE_CHARGING); assertThat(mBackend.isEnabled()).isFalse(); } @Test public void testResolveMissingWhenToStartOptionWhenCompliant() { mBackend.setWhenToDream(WHILE_CHARGING_OR_DOCKED); mBackend.setEnabled(true); mBackend.resolveMissingWhenToDream(new int[]{WHILE_CHARGING, WHILE_CHARGING_OR_DOCKED}); assertThat(mBackend.getWhenToDreamSetting()).isEqualTo(WHILE_CHARGING_OR_DOCKED); assertThat(mBackend.isEnabled()).isTrue(); } @Test public void testHomeControlsDisabled_ComplicationsEnabled() { setControlsEnabledOnLockscreen(true); Loading Loading @@ -218,6 +246,11 @@ public final class DreamBackendTest { Settings.Secure.SCREENSAVER_ACTIVATE_ON_POSTURED, 1 ); Settings.Secure.putInt( mContext.getContentResolver(), Settings.Secure.SCREENSAVER_ACTIVATE_ON_SLEEP, 0 ); Settings.Secure.putInt( mContext.getContentResolver(), Settings.Secure.SCREENSAVER_ACTIVATE_ON_DOCK, Loading