Add power consumption footer in screen timeout page.
- show this footer when there's no footer about work profile
Screenshots:
[without work profile]: https://screenshot.googleplex.com/5pAD2xBvP6QSBvY
[with work profile]: https://screenshot.googleplex.com/7BRd6ToAjFN9QZx
Bug: 300245790
Test: manual
Test: make RunSettingsRoboTests ROBOTEST_FILTER="com.android.settings.display.ScreenTimeoutSettingsTest"
Change-Id: I6df018d7758fbec3277179358b17eb11fa1aee34
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 6739a71..859a59c 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -2656,6 +2656,8 @@
<string name="adaptive_sleep_contextual_slice_title">Turn on screen attention</string>
<!-- Description about the contextual adaptive sleep card [CHAR LIMIT=NONE]-->
<string name="adaptive_sleep_contextual_slice_summary">Keep screen on when looking at it</string>
+ <!-- Description about the power consumption implication in screen timeout footer [CHAR LIMIT=NONE]-->
+ <string name="power_consumption_footer_summary">Longer screen timeout will use more battery.</string>
<!-- auto_rotate settings screen, title about the camera privacy lock enabled [CHAR LIMIT=NONE]-->
<string name="auto_rotate_camera_lock_title">Camera is locked</string>
<!-- Description feature's privacy sensitive details to make sure users understand what feature users, what it saves/sends etc [CHAR LIMIT=NONE]-->
diff --git a/src/com/android/settings/display/ScreenTimeoutSettings.java b/src/com/android/settings/display/ScreenTimeoutSettings.java
index 43dd31c..f7be319 100644
--- a/src/com/android/settings/display/ScreenTimeoutSettings.java
+++ b/src/com/android/settings/display/ScreenTimeoutSettings.java
@@ -93,6 +93,9 @@
FooterPreference mDisableOptionsPreference;
@VisibleForTesting
+ FooterPreference mPowerConsumptionPreference;
+
+ @VisibleForTesting
AdaptiveSleepPermissionPreferenceController mAdaptiveSleepPermissionController;
@VisibleForTesting
@@ -216,6 +219,9 @@
if (mAdmin != null) {
setupDisabledFooterPreference();
screen.addPreference(mDisableOptionsPreference);
+ } else {
+ setupPowerConsumptionFooterPreference();
+ screen.addPreference(mPowerConsumptionPreference);
}
}
@@ -236,8 +242,20 @@
mDisableOptionsPreference.setIcon(R.drawable.ic_info_outline_24dp);
// The 'disabled by admin' preference should always be at the end of the setting page.
- mDisableOptionsPreference.setOrder(DEFAULT_ORDER_OF_LOWEST_PREFERENCE);
mPrivacyPreference.setOrder(DEFAULT_ORDER_OF_LOWEST_PREFERENCE - 1);
+ mDisableOptionsPreference.setOrder(DEFAULT_ORDER_OF_LOWEST_PREFERENCE);
+ }
+
+ @VisibleForTesting
+ void setupPowerConsumptionFooterPreference() {
+ mPowerConsumptionPreference = new FooterPreference(getContext());
+ mPowerConsumptionPreference.setTitle(R.string.power_consumption_footer_summary);
+ mPowerConsumptionPreference.setSelectable(false);
+ mPowerConsumptionPreference.setIcon(R.drawable.ic_info_outline_24dp);
+
+ // The 'Longer screen timeout' preference should always be at the end of the setting page.
+ mPrivacyPreference.setOrder(DEFAULT_ORDER_OF_LOWEST_PREFERENCE - 1);
+ mPowerConsumptionPreference.setOrder(DEFAULT_ORDER_OF_LOWEST_PREFERENCE);
}
@Override
diff --git a/tests/robotests/src/com/android/settings/display/ScreenTimeoutSettingsTest.java b/tests/robotests/src/com/android/settings/display/ScreenTimeoutSettingsTest.java
index c33bd21..9e193ff 100644
--- a/tests/robotests/src/com/android/settings/display/ScreenTimeoutSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/display/ScreenTimeoutSettingsTest.java
@@ -93,6 +93,9 @@
FooterPreference mDisableOptionsPreference;
@Mock
+ FooterPreference mPowerConsumptionPreference;
+
+ @Mock
private PackageManager mPackageManager;
@Before
@@ -182,11 +185,28 @@
public void updateCandidates_enforcedAdmin_showDisabledByAdminPreference() {
mSettings.mAdmin = new RestrictedLockUtils.EnforcedAdmin();
mSettings.mDisableOptionsPreference = mDisableOptionsPreference;
+ mSettings.mPowerConsumptionPreference = mPowerConsumptionPreference;
doNothing().when(mSettings).setupDisabledFooterPreference();
+ doNothing().when(mSettings).setupPowerConsumptionFooterPreference();
mSettings.updateCandidates();
verify(mPreferenceScreen, atLeast(1)).addPreference(mDisableOptionsPreference);
+ verify(mPreferenceScreen, never()).addPreference(mPowerConsumptionPreference);
+ }
+
+ @Test
+ public void updateCandidates_withoutAdmin_showPowerConsumptionPreference() {
+ mSettings.mAdmin = null;
+ mSettings.mDisableOptionsPreference = mDisableOptionsPreference;
+ mSettings.mPowerConsumptionPreference = mPowerConsumptionPreference;
+ doNothing().when(mSettings).setupDisabledFooterPreference();
+ doNothing().when(mSettings).setupPowerConsumptionFooterPreference();
+
+ mSettings.updateCandidates();
+
+ verify(mPreferenceScreen, never()).addPreference(mDisableOptionsPreference);
+ verify(mPreferenceScreen, atLeast(1)).addPreference(mPowerConsumptionPreference);
}
@Test