Merge "Update dream summary when dream suppressed by bedtime mode" into tm-qpr-dev

This commit is contained in:
Lucas Silva
2022-10-18 17:17:25 +00:00
committed by Android (Google) Code Review
4 changed files with 80 additions and 10 deletions

View File

@@ -3359,6 +3359,8 @@
<string name="screensaver_settings_title">Screen saver</string> <string name="screensaver_settings_title">Screen saver</string>
<!-- List of synonyms used in the settings search bar to find the “Screen saver”. [CHAR LIMIT=NONE] --> <!-- List of synonyms used in the settings search bar to find the “Screen saver”. [CHAR LIMIT=NONE] -->
<string name="keywords_screensaver">screensaver</string> <string name="keywords_screensaver">screensaver</string>
<!-- Summary for screensaver unavailable when Bedtime mode is on [CHAR LIMIT=50] -->
<string name="screensaver_settings_when_to_dream_bedtime">Unavailable because bedtime mode is on</string>
<!-- The title for the toggle which disables/enables screen savers [CHAR_LIMIT=30] --> <!-- The title for the toggle which disables/enables screen savers [CHAR_LIMIT=30] -->
<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] -->

View File

@@ -18,6 +18,7 @@ import android.os.UserManager;
import androidx.preference.Preference; import androidx.preference.Preference;
import com.android.settings.R;
import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.dream.DreamSettings; import com.android.settings.dream.DreamSettings;
import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.AbstractPreferenceController;
@@ -26,9 +27,12 @@ public class ScreenSaverPreferenceController extends AbstractPreferenceControlle
PreferenceControllerMixin { PreferenceControllerMixin {
private static final String KEY_SCREEN_SAVER = "screensaver"; private static final String KEY_SCREEN_SAVER = "screensaver";
private final boolean mDreamsDisabledByAmbientModeSuppression;
public ScreenSaverPreferenceController(Context context) { public ScreenSaverPreferenceController(Context context) {
super(context); super(context);
mDreamsDisabledByAmbientModeSuppression = context.getResources().getBoolean(
com.android.internal.R.bool.config_dreamsDisabledByAmbientModeSuppressionConfig);
} }
@Override @Override
@@ -47,8 +51,13 @@ public class ScreenSaverPreferenceController extends AbstractPreferenceControlle
@Override @Override
public void updateState(Preference preference) { public void updateState(Preference preference) {
if (mDreamsDisabledByAmbientModeSuppression
&& AmbientDisplayAlwaysOnPreferenceController.isAodSuppressedByBedtime(mContext)) {
preference.setSummary(R.string.screensaver_settings_when_to_dream_bedtime);
} else {
preference.setSummary(DreamSettings.getSummaryTextWithDreamName(mContext)); preference.setSummary(DreamSettings.getSummaryTextWithDreamName(mContext));
} }
}
private boolean isSystemUser() { private boolean isSystemUser() {
final UserManager userManager = mContext.getSystemService(UserManager.class); final UserManager userManager = mContext.getSystemService(UserManager.class);

View File

@@ -20,7 +20,10 @@ import android.content.Context;
import androidx.preference.Preference; import androidx.preference.Preference;
import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.R;
import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.display.AmbientDisplayAlwaysOnPreferenceController;
import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.dream.DreamBackend; import com.android.settingslib.dream.DreamBackend;
@@ -29,19 +32,34 @@ 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;
WhenToDreamPreferenceController(Context context) { WhenToDreamPreferenceController(Context context) {
this(context, context.getResources().getBoolean(
com.android.internal.R.bool.config_dreamsDisabledByAmbientModeSuppressionConfig));
}
@VisibleForTesting
WhenToDreamPreferenceController(Context context,
boolean dreamsDisabledByAmbientModeSuppression) {
super(context); super(context);
mBackend = DreamBackend.getInstance(context); mBackend = DreamBackend.getInstance(context);
mDreamsDisabledByAmbientModeSuppression = dreamsDisabledByAmbientModeSuppression;
} }
@Override @Override
public void updateState(Preference preference) { public void updateState(Preference preference) {
super.updateState(preference); super.updateState(preference);
int resId = DreamSettings.getDreamSettingDescriptionResId(mBackend.getWhenToDreamSetting()); if (mDreamsDisabledByAmbientModeSuppression
preference.setSummary(preference.getContext().getString(resId)); && AmbientDisplayAlwaysOnPreferenceController.isAodSuppressedByBedtime(mContext)) {
preference.setSummary(R.string.screensaver_settings_when_to_dream_bedtime);
} else {
final int resId = DreamSettings.getDreamSettingDescriptionResId(
mBackend.getWhenToDreamSetting());
preference.setSummary(resId);
}
} }
@Override @Override

View File

@@ -16,15 +16,24 @@
package com.android.settings.dream; package com.android.settings.dream;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.anyInt;
import static org.mockito.Mockito.anyString;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import android.content.Context; import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.os.PowerManager;
import androidx.preference.Preference; import androidx.preference.Preference;
import androidx.test.core.app.ApplicationProvider; import androidx.test.core.app.ApplicationProvider;
import com.android.settings.R;
import com.android.settings.display.AmbientDisplayAlwaysOnPreferenceController;
import com.android.settingslib.dream.DreamBackend; import com.android.settingslib.dream.DreamBackend;
import com.android.settingslib.dream.DreamBackend.WhenToDream; import com.android.settingslib.dream.DreamBackend.WhenToDream;
@@ -38,32 +47,64 @@ import org.robolectric.util.ReflectionHelpers;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
public class WhenToDreamPreferenceControllerTest { public class WhenToDreamPreferenceControllerTest {
private static final String TEST_PACKAGE = "com.android.test";
private WhenToDreamPreferenceController mController; private WhenToDreamPreferenceController mController;
private Context mContext; private Context mContext;
@Mock @Mock
private DreamBackend mBackend; private DreamBackend mBackend;
@Mock
private PowerManager mPowerManager;
@Mock
private PackageManager mPackageManager;
@Mock
private ApplicationInfo mApplicationInfo;
@Before @Before
public void setup() { public void setup() throws Exception {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
mContext = ApplicationProvider.getApplicationContext(); mContext = spy(ApplicationProvider.getApplicationContext());
mController = new WhenToDreamPreferenceController(mContext); mController = new WhenToDreamPreferenceController(mContext, true);
ReflectionHelpers.setField(mController, "mBackend", mBackend); ReflectionHelpers.setField(mController, "mBackend", mBackend);
when(mContext.getSystemService(PowerManager.class)).thenReturn(mPowerManager);
when(mPowerManager.isAmbientDisplaySuppressedForTokenByApp(anyString(), anyInt()))
.thenReturn(false);
mApplicationInfo.uid = 1;
when(mContext.getString(
com.android.internal.R.string.config_defaultWellbeingPackage)).thenReturn(
TEST_PACKAGE);
when(mContext.getPackageManager()).thenReturn(mPackageManager);
when(mPackageManager.getApplicationInfo(TEST_PACKAGE, /* flag= */ 0)).thenReturn(
mApplicationInfo);
} }
@Test @Test
public void updateSummary() { public void testUpdateSummary() {
// Don't have to test the other settings because DreamSettings tests that all // Don't have to test the other settings because DreamSettings tests that all
// @WhenToDream values map to the correct ResId // @WhenToDream values map to the correct ResId
final @WhenToDream int testSetting = DreamBackend.WHILE_CHARGING; final @WhenToDream int testSetting = DreamBackend.WHILE_CHARGING;
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 String expectedString = final int expectedResId = DreamSettings.getDreamSettingDescriptionResId(testSetting);
mContext.getString(DreamSettings.getDreamSettingDescriptionResId(testSetting));
mController.updateState(mockPref); mController.updateState(mockPref);
verify(mockPref).setSummary(expectedString); verify(mockPref).setSummary(expectedResId);
}
@Test
public void testBedtimeModeSuppression() {
final Preference mockPref = mock(Preference.class);
when(mockPref.getContext()).thenReturn(mContext);
when(mBackend.getWhenToDreamSetting()).thenReturn(DreamBackend.WHILE_CHARGING);
when(mPowerManager.isAmbientDisplaySuppressedForTokenByApp(anyString(), anyInt()))
.thenReturn(true);
assertTrue(AmbientDisplayAlwaysOnPreferenceController.isAodSuppressedByBedtime(mContext));
mController.updateState(mockPref);
verify(mockPref).setSummary(R.string.screensaver_settings_when_to_dream_bedtime);
} }
} }