Update the "When to dream" settings
For devices which don't support dreaming on battery, we can offer simpler options since the device must always be charging for screensavers to appear. Therefore there are only two options: 1. While charging 2. While docked and charging Test: flashed and verified on device Test: make -j64 RunSettingsRoboTests Fixes: 226187572 Change-Id: I6ed24cda8874f2fb941f6cfded9ed97ed78a3cb6
This commit is contained in:
@@ -1216,6 +1216,20 @@
|
||||
<item>90</item>
|
||||
</string-array>
|
||||
|
||||
<!-- Options for screensaver "When to start" for devices that do not support screensavers
|
||||
while on battery -->
|
||||
<string-array name="when_to_start_screensaver_entries_no_battery" translatable="false">
|
||||
<item>@string/screensaver_settings_summary_sleep</item>
|
||||
<item>@string/screensaver_settings_summary_dock_and_charging</item>
|
||||
</string-array>
|
||||
|
||||
<!-- Values for screensaver "When to start" for devices that do not support screensavers
|
||||
while on battery -->
|
||||
<string-array name="when_to_start_screensaver_values_no_battery" translatable="false">
|
||||
<item>while_charging_only</item>
|
||||
<item>while_docked_only</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="when_to_start_screensaver_entries" translatable="false">
|
||||
<item>@string/screensaver_settings_summary_sleep</item>
|
||||
<item>@string/screensaver_settings_summary_dock</item>
|
||||
|
@@ -3365,6 +3365,8 @@
|
||||
<string name="screensaver_settings_toggle_title">Use screen saver</string>
|
||||
<!-- Display settings screen, summary fragment for screen saver options, activated when docked or asleep and charging [CHAR LIMIT=35] -->
|
||||
<string name="screensaver_settings_summary_either_long">While charging or docked</string>
|
||||
<!-- Display settings screen, summary fragment for screen saver options, actived while docked and charging [CHAR LIMIT=35] -->
|
||||
<string name="screensaver_settings_summary_dock_and_charging">While docked and charging</string>
|
||||
<!-- Display settings screen, summary fragment for screen saver options, activated when asleep and charging [CHAR LIMIT=35] -->
|
||||
<string name="screensaver_settings_summary_sleep">While charging</string>
|
||||
<!-- Display settings screen, summary fragment for screen saver options, activated when docked [CHAR LIMIT=35] -->
|
||||
|
@@ -90,12 +90,14 @@ public class DreamSettings extends DashboardFragment implements OnMainSwitchChan
|
||||
}
|
||||
}
|
||||
|
||||
static int getDreamSettingDescriptionResId(@WhenToDream int dreamSetting) {
|
||||
static int getDreamSettingDescriptionResId(@WhenToDream int dreamSetting,
|
||||
boolean enabledOnBattery) {
|
||||
switch (dreamSetting) {
|
||||
case WHILE_CHARGING:
|
||||
return R.string.screensaver_settings_summary_sleep;
|
||||
case WHILE_DOCKED:
|
||||
return R.string.screensaver_settings_summary_dock;
|
||||
return enabledOnBattery ? R.string.screensaver_settings_summary_dock
|
||||
: R.string.screensaver_settings_summary_dock_and_charging;
|
||||
case EITHER:
|
||||
return R.string.screensaver_settings_summary_either_long;
|
||||
case NEVER:
|
||||
|
@@ -32,12 +32,15 @@ public class WhenToDreamPicker extends RadioButtonPickerFragment {
|
||||
|
||||
private static final String TAG = "WhenToDreamPicker";
|
||||
private DreamBackend mBackend;
|
||||
private boolean mDreamsSupportedOnBattery;
|
||||
|
||||
@Override
|
||||
public void onAttach(Context context) {
|
||||
super.onAttach(context);
|
||||
|
||||
mBackend = DreamBackend.getInstance(context);
|
||||
mDreamsSupportedOnBattery = getResources().getBoolean(
|
||||
com.android.internal.R.bool.config_dreamsEnabledOnBattery);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -69,11 +72,17 @@ public class WhenToDreamPicker extends RadioButtonPickerFragment {
|
||||
}
|
||||
|
||||
private String[] entries() {
|
||||
return getResources().getStringArray(R.array.when_to_start_screensaver_entries);
|
||||
if (mDreamsSupportedOnBattery) {
|
||||
return getResources().getStringArray(R.array.when_to_start_screensaver_entries);
|
||||
}
|
||||
return getResources().getStringArray(R.array.when_to_start_screensaver_entries_no_battery);
|
||||
}
|
||||
|
||||
private String[] keys() {
|
||||
return getResources().getStringArray(R.array.when_to_start_screensaver_values);
|
||||
if (mDreamsSupportedOnBattery) {
|
||||
return getResources().getStringArray(R.array.when_to_start_screensaver_values);
|
||||
}
|
||||
return getResources().getStringArray(R.array.when_to_start_screensaver_values_no_battery);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -33,19 +33,24 @@ public class WhenToDreamPreferenceController extends AbstractPreferenceControlle
|
||||
private static final String WHEN_TO_START = "when_to_start";
|
||||
private final DreamBackend mBackend;
|
||||
private final boolean mDreamsDisabledByAmbientModeSuppression;
|
||||
private final boolean mDreamsEnabledOnBattery;
|
||||
|
||||
WhenToDreamPreferenceController(Context context) {
|
||||
this(context, context.getResources().getBoolean(
|
||||
com.android.internal.R.bool.config_dreamsDisabledByAmbientModeSuppressionConfig));
|
||||
com.android.internal.R.bool.config_dreamsDisabledByAmbientModeSuppressionConfig),
|
||||
context.getResources().getBoolean(
|
||||
com.android.internal.R.bool.config_dreamsEnabledOnBattery));
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
WhenToDreamPreferenceController(Context context,
|
||||
boolean dreamsDisabledByAmbientModeSuppression) {
|
||||
boolean dreamsDisabledByAmbientModeSuppression,
|
||||
boolean dreamsEnabledOnBattery) {
|
||||
super(context);
|
||||
|
||||
mBackend = DreamBackend.getInstance(context);
|
||||
mDreamsDisabledByAmbientModeSuppression = dreamsDisabledByAmbientModeSuppression;
|
||||
mDreamsEnabledOnBattery = dreamsEnabledOnBattery;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -57,7 +62,7 @@ public class WhenToDreamPreferenceController extends AbstractPreferenceControlle
|
||||
preference.setSummary(R.string.screensaver_settings_when_to_dream_bedtime);
|
||||
} else {
|
||||
final int resId = DreamSettings.getDreamSettingDescriptionResId(
|
||||
mBackend.getWhenToDreamSetting());
|
||||
mBackend.getWhenToDreamSetting(), mDreamsEnabledOnBattery);
|
||||
preference.setSummary(resId);
|
||||
}
|
||||
}
|
||||
|
@@ -29,33 +29,40 @@ import com.android.settingslib.dream.DreamBackend.WhenToDream;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
public class DreamSettingsTest {
|
||||
|
||||
private static final List<String> KEYS = Arrays.asList(
|
||||
DreamSettings.WHILE_CHARGING_ONLY,
|
||||
DreamSettings.WHILE_DOCKED_ONLY,
|
||||
DreamSettings.EITHER_CHARGING_OR_DOCKED,
|
||||
DreamSettings.NEVER_DREAM
|
||||
DreamSettings.WHILE_CHARGING_ONLY,
|
||||
DreamSettings.WHILE_DOCKED_ONLY,
|
||||
DreamSettings.EITHER_CHARGING_OR_DOCKED,
|
||||
DreamSettings.NEVER_DREAM
|
||||
);
|
||||
|
||||
private static final @WhenToDream int[] SETTINGS = {
|
||||
DreamBackend.WHILE_CHARGING,
|
||||
DreamBackend.WHILE_DOCKED,
|
||||
DreamBackend.EITHER,
|
||||
DreamBackend.NEVER,
|
||||
DreamBackend.WHILE_CHARGING,
|
||||
DreamBackend.WHILE_DOCKED,
|
||||
DreamBackend.EITHER,
|
||||
DreamBackend.NEVER,
|
||||
};
|
||||
|
||||
private static final int[] RES_IDS = {
|
||||
R.string.screensaver_settings_summary_sleep,
|
||||
R.string.screensaver_settings_summary_dock,
|
||||
R.string.screensaver_settings_summary_either_long,
|
||||
R.string.screensaver_settings_summary_never
|
||||
R.string.screensaver_settings_summary_sleep,
|
||||
R.string.screensaver_settings_summary_dock,
|
||||
R.string.screensaver_settings_summary_either_long,
|
||||
R.string.screensaver_settings_summary_never
|
||||
};
|
||||
|
||||
private static final int[] RES_IDS_NO_BATTERY = {
|
||||
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_never
|
||||
};
|
||||
|
||||
@Test
|
||||
@@ -81,11 +88,17 @@ public class DreamSettingsTest {
|
||||
@Test
|
||||
public void getDreamSettingDescriptionResId() {
|
||||
for (int i = 0; i < SETTINGS.length; i++) {
|
||||
assertThat(DreamSettings.getDreamSettingDescriptionResId(SETTINGS[i]))
|
||||
assertThat(DreamSettings.getDreamSettingDescriptionResId(
|
||||
SETTINGS[i], /* enabledOnBattery= */ false))
|
||||
.isEqualTo(RES_IDS_NO_BATTERY[i]);
|
||||
assertThat(DreamSettings.getDreamSettingDescriptionResId(
|
||||
SETTINGS[i], /* enabledOnBattery= */ true))
|
||||
.isEqualTo(RES_IDS[i]);
|
||||
}
|
||||
// Default
|
||||
assertThat(DreamSettings.getDreamSettingDescriptionResId(-1))
|
||||
assertThat(DreamSettings.getDreamSettingDescriptionResId(-1, /* enabledOnBattery= */ false))
|
||||
.isEqualTo(R.string.screensaver_settings_summary_never);
|
||||
assertThat(DreamSettings.getDreamSettingDescriptionResId(-1, /* enabledOnBattery= */ true))
|
||||
.isEqualTo(R.string.screensaver_settings_summary_never);
|
||||
}
|
||||
|
||||
|
@@ -28,6 +28,7 @@ import android.os.UserManager;
|
||||
import androidx.test.core.app.ApplicationProvider;
|
||||
|
||||
import com.android.settings.testutils.FakeFeatureFactory;
|
||||
import com.android.settings.testutils.shadow.SettingsShadowResources;
|
||||
import com.android.settingslib.dream.DreamBackend;
|
||||
|
||||
import org.junit.Before;
|
||||
@@ -37,9 +38,11 @@ import org.mockito.Answers;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
import org.robolectric.annotation.Config;
|
||||
import org.robolectric.util.ReflectionHelpers;
|
||||
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
@Config(shadows = SettingsShadowResources.class)
|
||||
public class WhenToDreamPickerTest {
|
||||
|
||||
private WhenToDreamPicker mPicker;
|
||||
@@ -53,10 +56,15 @@ public class WhenToDreamPickerTest {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
final Context context = spy(ApplicationProvider.getApplicationContext());
|
||||
|
||||
SettingsShadowResources.overrideResource(
|
||||
com.android.internal.R.bool.config_dreamsEnabledOnBattery,
|
||||
true);
|
||||
|
||||
when(context.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
|
||||
FakeFeatureFactory.setupForTest();
|
||||
|
||||
mPicker = new WhenToDreamPicker();
|
||||
mPicker = spy(new WhenToDreamPicker());
|
||||
when(mPicker.getContext()).thenReturn(context);
|
||||
mPicker.onAttach(context);
|
||||
|
||||
ReflectionHelpers.setField(mPicker, "mBackend", mBackend);
|
||||
|
@@ -64,7 +64,7 @@ public class WhenToDreamPreferenceControllerTest {
|
||||
public void setup() throws Exception {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
mContext = spy(ApplicationProvider.getApplicationContext());
|
||||
mController = new WhenToDreamPreferenceController(mContext, true);
|
||||
mController = new WhenToDreamPreferenceController(mContext, true, true);
|
||||
ReflectionHelpers.setField(mController, "mBackend", mBackend);
|
||||
when(mContext.getSystemService(PowerManager.class)).thenReturn(mPowerManager);
|
||||
when(mPowerManager.isAmbientDisplaySuppressedForTokenByApp(anyString(), anyInt()))
|
||||
@@ -88,7 +88,7 @@ public class WhenToDreamPreferenceControllerTest {
|
||||
final Preference mockPref = mock(Preference.class);
|
||||
when(mockPref.getContext()).thenReturn(mContext);
|
||||
when(mBackend.getWhenToDreamSetting()).thenReturn(testSetting);
|
||||
final int expectedResId = DreamSettings.getDreamSettingDescriptionResId(testSetting);
|
||||
final int expectedResId = DreamSettings.getDreamSettingDescriptionResId(testSetting, true);
|
||||
|
||||
mController.updateState(mockPref);
|
||||
verify(mockPref).setSummary(expectedResId);
|
||||
|
Reference in New Issue
Block a user