Update dark theme slice for new display criteria
- Add "dark theme scheduling is off" as a new display creteria. Fixes: 142476879 Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.homepage Change-Id: Ib88edd0bd9d4b776cdf8ec93bac4e199e0da41de
This commit is contained in:
@@ -162,11 +162,10 @@ public class DarkThemeSlice implements CustomSliceable {
|
|||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
boolean isAvailable(Context context) {
|
boolean isAvailable(Context context) {
|
||||||
// checking dark theme mode.
|
// check if dark theme mode is enabled or if dark theme scheduling is on.
|
||||||
if (isDarkThemeMode(context)) {
|
if (isDarkThemeMode(context) || isNightModeScheduled()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// checking the current battery level
|
// checking the current battery level
|
||||||
final BatteryManager batteryManager = context.getSystemService(BatteryManager.class);
|
final BatteryManager batteryManager = context.getSystemService(BatteryManager.class);
|
||||||
final int level = batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY);
|
final int level = batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY);
|
||||||
@@ -186,6 +185,18 @@ public class DarkThemeSlice implements CustomSliceable {
|
|||||||
sSliceClicked = clicked;
|
sSliceClicked = clicked;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean isNightModeScheduled() {
|
||||||
|
final int mode = mUiModeManager.getNightMode();
|
||||||
|
if (DEBUG) {
|
||||||
|
Log.d(TAG, "night mode : " + mode);
|
||||||
|
}
|
||||||
|
// Turn on from sunset to sunrise or turn on at custom time
|
||||||
|
if (mode == UiModeManager.MODE_NIGHT_AUTO || mode == UiModeManager.MODE_NIGHT_CUSTOM) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public static class DarkThemeWorker extends SliceBackgroundWorker<Void> {
|
public static class DarkThemeWorker extends SliceBackgroundWorker<Void> {
|
||||||
private final Context mContext;
|
private final Context mContext;
|
||||||
private final ContentObserver mContentObserver =
|
private final ContentObserver mContentObserver =
|
||||||
|
@@ -25,6 +25,7 @@ import static org.mockito.Mockito.doReturn;
|
|||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
|
import android.app.UiModeManager;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.BatteryManager;
|
import android.os.BatteryManager;
|
||||||
@@ -54,6 +55,8 @@ public class DarkThemeSliceTest {
|
|||||||
private BatteryManager mBatteryManager;
|
private BatteryManager mBatteryManager;
|
||||||
@Mock
|
@Mock
|
||||||
private PowerManager mPowerManager;
|
private PowerManager mPowerManager;
|
||||||
|
@Mock
|
||||||
|
private UiModeManager mUiModeManager;
|
||||||
|
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
private DarkThemeSlice mDarkThemeSlice;
|
private DarkThemeSlice mDarkThemeSlice;
|
||||||
@@ -68,6 +71,7 @@ public class DarkThemeSliceTest {
|
|||||||
mFeatureFactory.slicesFeatureProvider.newUiSession();
|
mFeatureFactory.slicesFeatureProvider.newUiSession();
|
||||||
doReturn(mPowerManager).when(mContext).getSystemService(PowerManager.class);
|
doReturn(mPowerManager).when(mContext).getSystemService(PowerManager.class);
|
||||||
when(mPowerManager.isPowerSaveMode()).thenReturn(false);
|
when(mPowerManager.isPowerSaveMode()).thenReturn(false);
|
||||||
|
doReturn(mUiModeManager).when(mContext).getSystemService(UiModeManager.class);
|
||||||
|
|
||||||
// Set-up specs for SliceMetadata.
|
// Set-up specs for SliceMetadata.
|
||||||
SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS);
|
SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS);
|
||||||
@@ -89,9 +93,26 @@ public class DarkThemeSliceTest {
|
|||||||
assertThat(mDarkThemeSlice.isAvailable(mContext)).isFalse();
|
assertThat(mDarkThemeSlice.isAvailable(mContext)).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void isAvailable_nonDarkTheme_autoNightMode_returnFalse() {
|
||||||
|
mContext.getResources().getConfiguration().uiMode = UI_MODE_NIGHT_NO;
|
||||||
|
setNightMode(UiModeManager.MODE_NIGHT_AUTO);
|
||||||
|
|
||||||
|
assertThat(mDarkThemeSlice.isAvailable(mContext)).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void isAvailable_nonDarkTheme_customNightMode_returnFalse() {
|
||||||
|
mContext.getResources().getConfiguration().uiMode = UI_MODE_NIGHT_NO;
|
||||||
|
setNightMode(UiModeManager.MODE_NIGHT_CUSTOM);
|
||||||
|
|
||||||
|
assertThat(mDarkThemeSlice.isAvailable(mContext)).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void isAvailable_nonDarkThemeBatteryCapacityEq100_returnFalse() {
|
public void isAvailable_nonDarkThemeBatteryCapacityEq100_returnFalse() {
|
||||||
setBatteryCapacityLevel(100);
|
setBatteryCapacityLevel(100);
|
||||||
|
setNightMode(UiModeManager.MODE_NIGHT_NO);
|
||||||
|
|
||||||
assertThat(mDarkThemeSlice.isAvailable(mContext)).isFalse();
|
assertThat(mDarkThemeSlice.isAvailable(mContext)).isFalse();
|
||||||
}
|
}
|
||||||
@@ -99,6 +120,7 @@ public class DarkThemeSliceTest {
|
|||||||
@Test
|
@Test
|
||||||
public void isAvailable_nonDarkThemeBatteryCapacityLt50_returnTrue() {
|
public void isAvailable_nonDarkThemeBatteryCapacityLt50_returnTrue() {
|
||||||
setBatteryCapacityLevel(40);
|
setBatteryCapacityLevel(40);
|
||||||
|
setNightMode(UiModeManager.MODE_NIGHT_NO);
|
||||||
|
|
||||||
assertThat(mDarkThemeSlice.isAvailable(mContext)).isTrue();
|
assertThat(mDarkThemeSlice.isAvailable(mContext)).isTrue();
|
||||||
}
|
}
|
||||||
@@ -142,6 +164,7 @@ public class DarkThemeSliceTest {
|
|||||||
mFeatureFactory.slicesFeatureProvider.getUiSessionToken();
|
mFeatureFactory.slicesFeatureProvider.getUiSessionToken();
|
||||||
mDarkThemeSlice.sKeepSliceShow = true;
|
mDarkThemeSlice.sKeepSliceShow = true;
|
||||||
setBatteryCapacityLevel(40);
|
setBatteryCapacityLevel(40);
|
||||||
|
setNightMode(UiModeManager.MODE_NIGHT_NO);
|
||||||
|
|
||||||
assertThat(mDarkThemeSlice.getSlice()).isNotNull();
|
assertThat(mDarkThemeSlice.getSlice()).isNotNull();
|
||||||
}
|
}
|
||||||
@@ -162,6 +185,7 @@ public class DarkThemeSliceTest {
|
|||||||
mDarkThemeSlice.sSliceClicked = true;
|
mDarkThemeSlice.sSliceClicked = true;
|
||||||
|
|
||||||
setBatteryCapacityLevel(40);
|
setBatteryCapacityLevel(40);
|
||||||
|
setNightMode(UiModeManager.MODE_NIGHT_NO);
|
||||||
|
|
||||||
assertThat(mDarkThemeSlice.getSlice()).isNotNull();
|
assertThat(mDarkThemeSlice.getSlice()).isNotNull();
|
||||||
}
|
}
|
||||||
@@ -169,6 +193,7 @@ public class DarkThemeSliceTest {
|
|||||||
@Test
|
@Test
|
||||||
public void getSlice_isAvailable_returnSlice() {
|
public void getSlice_isAvailable_returnSlice() {
|
||||||
setBatteryCapacityLevel(40);
|
setBatteryCapacityLevel(40);
|
||||||
|
setNightMode(UiModeManager.MODE_NIGHT_NO);
|
||||||
|
|
||||||
assertThat(mDarkThemeSlice.getSlice()).isNotNull();
|
assertThat(mDarkThemeSlice.getSlice()).isNotNull();
|
||||||
}
|
}
|
||||||
@@ -176,6 +201,7 @@ public class DarkThemeSliceTest {
|
|||||||
@Test
|
@Test
|
||||||
public void getSlice_isAvailable_showTitleSubtitle() {
|
public void getSlice_isAvailable_showTitleSubtitle() {
|
||||||
setBatteryCapacityLevel(40);
|
setBatteryCapacityLevel(40);
|
||||||
|
setNightMode(UiModeManager.MODE_NIGHT_NO);
|
||||||
|
|
||||||
final Slice slice = mDarkThemeSlice.getSlice();
|
final Slice slice = mDarkThemeSlice.getSlice();
|
||||||
final SliceMetadata metadata = SliceMetadata.from(mContext, slice);
|
final SliceMetadata metadata = SliceMetadata.from(mContext, slice);
|
||||||
@@ -191,4 +217,8 @@ public class DarkThemeSliceTest {
|
|||||||
when(mBatteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY))
|
when(mBatteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY))
|
||||||
.thenReturn(power_level);
|
.thenReturn(power_level);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setNightMode(int mode) {
|
||||||
|
when(mUiModeManager.getNightMode()).thenReturn(mode);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user