Merge "Update dream summary when dream suppressed by bedtime mode" into tm-qpr-dev
This commit is contained in:
@@ -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] -->
|
||||||
|
@@ -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,7 +51,12 @@ public class ScreenSaverPreferenceController extends AbstractPreferenceControlle
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateState(Preference preference) {
|
public void updateState(Preference preference) {
|
||||||
preference.setSummary(DreamSettings.getSummaryTextWithDreamName(mContext));
|
if (mDreamsDisabledByAmbientModeSuppression
|
||||||
|
&& AmbientDisplayAlwaysOnPreferenceController.isAodSuppressedByBedtime(mContext)) {
|
||||||
|
preference.setSummary(R.string.screensaver_settings_when_to_dream_bedtime);
|
||||||
|
} else {
|
||||||
|
preference.setSummary(DreamSettings.getSummaryTextWithDreamName(mContext));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isSystemUser() {
|
private boolean isSystemUser() {
|
||||||
|
@@ -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
|
||||||
|
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user