Update the "When to dream" settings am: 47d84b41ac

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/20302008

Change-Id: Id0ae8f8af81ab9cea7e61b1050e077afbe51a1f1
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Lucas Silva
2022-10-28 20:34:09 +00:00
committed by Automerger Merge Worker
8 changed files with 78 additions and 25 deletions

View File

@@ -1216,6 +1216,20 @@
<item>90</item> <item>90</item>
</string-array> </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"> <string-array name="when_to_start_screensaver_entries" translatable="false">
<item>@string/screensaver_settings_summary_sleep</item> <item>@string/screensaver_settings_summary_sleep</item>
<item>@string/screensaver_settings_summary_dock</item> <item>@string/screensaver_settings_summary_dock</item>

View File

@@ -3371,6 +3371,8 @@
<string name="screensaver_settings_toggle_title">Use screen saver</string> <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] --> <!-- 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> <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] --> <!-- 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> <string name="screensaver_settings_summary_sleep">While charging</string>
<!-- Display settings screen, summary fragment for screen saver options, activated when docked [CHAR LIMIT=35] --> <!-- Display settings screen, summary fragment for screen saver options, activated when docked [CHAR LIMIT=35] -->

View File

@@ -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) { switch (dreamSetting) {
case WHILE_CHARGING: case WHILE_CHARGING:
return R.string.screensaver_settings_summary_sleep; return R.string.screensaver_settings_summary_sleep;
case WHILE_DOCKED: 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: case EITHER:
return R.string.screensaver_settings_summary_either_long; return R.string.screensaver_settings_summary_either_long;
case NEVER: case NEVER:

View File

@@ -32,12 +32,15 @@ public class WhenToDreamPicker extends RadioButtonPickerFragment {
private static final String TAG = "WhenToDreamPicker"; private static final String TAG = "WhenToDreamPicker";
private DreamBackend mBackend; private DreamBackend mBackend;
private boolean mDreamsSupportedOnBattery;
@Override @Override
public void onAttach(Context context) { public void onAttach(Context context) {
super.onAttach(context); super.onAttach(context);
mBackend = DreamBackend.getInstance(context); mBackend = DreamBackend.getInstance(context);
mDreamsSupportedOnBattery = getResources().getBoolean(
com.android.internal.R.bool.config_dreamsEnabledOnBattery);
} }
@Override @Override
@@ -69,12 +72,18 @@ public class WhenToDreamPicker extends RadioButtonPickerFragment {
} }
private String[] entries() { private String[] entries() {
if (mDreamsSupportedOnBattery) {
return getResources().getStringArray(R.array.when_to_start_screensaver_entries); 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() { private String[] keys() {
if (mDreamsSupportedOnBattery) {
return getResources().getStringArray(R.array.when_to_start_screensaver_values); return getResources().getStringArray(R.array.when_to_start_screensaver_values);
} }
return getResources().getStringArray(R.array.when_to_start_screensaver_values_no_battery);
}
@Override @Override
protected String getDefaultKey() { protected String getDefaultKey() {

View File

@@ -33,19 +33,24 @@ public class WhenToDreamPreferenceController extends AbstractPreferenceControlle
private static final String WHEN_TO_START = "when_to_start"; private static final String WHEN_TO_START = "when_to_start";
private final DreamBackend mBackend; private final DreamBackend mBackend;
private final boolean mDreamsDisabledByAmbientModeSuppression; private final boolean mDreamsDisabledByAmbientModeSuppression;
private final boolean mDreamsEnabledOnBattery;
WhenToDreamPreferenceController(Context context) { WhenToDreamPreferenceController(Context context) {
this(context, context.getResources().getBoolean( 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 @VisibleForTesting
WhenToDreamPreferenceController(Context context, WhenToDreamPreferenceController(Context context,
boolean dreamsDisabledByAmbientModeSuppression) { boolean dreamsDisabledByAmbientModeSuppression,
boolean dreamsEnabledOnBattery) {
super(context); super(context);
mBackend = DreamBackend.getInstance(context); mBackend = DreamBackend.getInstance(context);
mDreamsDisabledByAmbientModeSuppression = dreamsDisabledByAmbientModeSuppression; mDreamsDisabledByAmbientModeSuppression = dreamsDisabledByAmbientModeSuppression;
mDreamsEnabledOnBattery = dreamsEnabledOnBattery;
} }
@Override @Override
@@ -57,7 +62,7 @@ public class WhenToDreamPreferenceController extends AbstractPreferenceControlle
preference.setSummary(R.string.screensaver_settings_when_to_dream_bedtime); preference.setSummary(R.string.screensaver_settings_when_to_dream_bedtime);
} else { } else {
final int resId = DreamSettings.getDreamSettingDescriptionResId( final int resId = DreamSettings.getDreamSettingDescriptionResId(
mBackend.getWhenToDreamSetting()); mBackend.getWhenToDreamSetting(), mDreamsEnabledOnBattery);
preference.setSummary(resId); preference.setSummary(resId);
} }
} }

View File

@@ -29,10 +29,10 @@ import com.android.settingslib.dream.DreamBackend.WhenToDream;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import org.robolectric.RobolectricTestRunner;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
public class DreamSettingsTest { public class DreamSettingsTest {
@@ -58,6 +58,13 @@ public class DreamSettingsTest {
R.string.screensaver_settings_summary_never 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 @Test
public void getSettingFromPrefKey() { public void getSettingFromPrefKey() {
for (int i = 0; i < KEYS.size(); i++) { for (int i = 0; i < KEYS.size(); i++) {
@@ -81,11 +88,17 @@ public class DreamSettingsTest {
@Test @Test
public void getDreamSettingDescriptionResId() { public void getDreamSettingDescriptionResId() {
for (int i = 0; i < SETTINGS.length; i++) { 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]); .isEqualTo(RES_IDS[i]);
} }
// Default // 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); .isEqualTo(R.string.screensaver_settings_summary_never);
} }

View File

@@ -28,6 +28,7 @@ import android.os.UserManager;
import androidx.test.core.app.ApplicationProvider; import androidx.test.core.app.ApplicationProvider;
import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.shadow.SettingsShadowResources;
import com.android.settingslib.dream.DreamBackend; import com.android.settingslib.dream.DreamBackend;
import org.junit.Before; import org.junit.Before;
@@ -37,9 +38,11 @@ import org.mockito.Answers;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
import org.robolectric.util.ReflectionHelpers; import org.robolectric.util.ReflectionHelpers;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
@Config(shadows = SettingsShadowResources.class)
public class WhenToDreamPickerTest { public class WhenToDreamPickerTest {
private WhenToDreamPicker mPicker; private WhenToDreamPicker mPicker;
@@ -53,10 +56,15 @@ public class WhenToDreamPickerTest {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
final Context context = spy(ApplicationProvider.getApplicationContext()); final Context context = spy(ApplicationProvider.getApplicationContext());
SettingsShadowResources.overrideResource(
com.android.internal.R.bool.config_dreamsEnabledOnBattery,
true);
when(context.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager); when(context.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
FakeFeatureFactory.setupForTest(); FakeFeatureFactory.setupForTest();
mPicker = new WhenToDreamPicker(); mPicker = spy(new WhenToDreamPicker());
when(mPicker.getContext()).thenReturn(context);
mPicker.onAttach(context); mPicker.onAttach(context);
ReflectionHelpers.setField(mPicker, "mBackend", mBackend); ReflectionHelpers.setField(mPicker, "mBackend", mBackend);

View File

@@ -64,7 +64,7 @@ public class WhenToDreamPreferenceControllerTest {
public void setup() throws Exception { public void setup() throws Exception {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
mContext = spy(ApplicationProvider.getApplicationContext()); mContext = spy(ApplicationProvider.getApplicationContext());
mController = new WhenToDreamPreferenceController(mContext, true); mController = new WhenToDreamPreferenceController(mContext, true, true);
ReflectionHelpers.setField(mController, "mBackend", mBackend); ReflectionHelpers.setField(mController, "mBackend", mBackend);
when(mContext.getSystemService(PowerManager.class)).thenReturn(mPowerManager); when(mContext.getSystemService(PowerManager.class)).thenReturn(mPowerManager);
when(mPowerManager.isAmbientDisplaySuppressedForTokenByApp(anyString(), anyInt())) when(mPowerManager.isAmbientDisplaySuppressedForTokenByApp(anyString(), anyInt()))
@@ -88,7 +88,7 @@ public class WhenToDreamPreferenceControllerTest {
final Preference mockPref = mock(Preference.class); final Preference mockPref = mock(Preference.class);
when(mockPref.getContext()).thenReturn(mContext); when(mockPref.getContext()).thenReturn(mContext);
when(mBackend.getWhenToDreamSetting()).thenReturn(testSetting); when(mBackend.getWhenToDreamSetting()).thenReturn(testSetting);
final int expectedResId = DreamSettings.getDreamSettingDescriptionResId(testSetting); final int expectedResId = DreamSettings.getDreamSettingDescriptionResId(testSetting, true);
mController.updateState(mockPref); mController.updateState(mockPref);
verify(mockPref).setSummary(expectedResId); verify(mockPref).setSummary(expectedResId);