From 027db802fe9eae17fcc734a4d6a19baeccb21617 Mon Sep 17 00:00:00 2001 From: mxyyiyi Date: Fri, 24 Nov 2023 15:08:43 +0800 Subject: [PATCH] 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 --- res/values/strings.xml | 2 ++ .../display/ScreenTimeoutSettings.java | 20 ++++++++++++++++++- .../display/ScreenTimeoutSettingsTest.java | 20 +++++++++++++++++++ 3 files changed, 41 insertions(+), 1 deletion(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 6739a71d61c..859a59c44f7 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -2656,6 +2656,8 @@ Turn on screen attention Keep screen on when looking at it + + Longer screen timeout will use more battery. Camera is locked diff --git a/src/com/android/settings/display/ScreenTimeoutSettings.java b/src/com/android/settings/display/ScreenTimeoutSettings.java index 43dd31c9359..f7be3192a76 100644 --- a/src/com/android/settings/display/ScreenTimeoutSettings.java +++ b/src/com/android/settings/display/ScreenTimeoutSettings.java @@ -92,6 +92,9 @@ public class ScreenTimeoutSettings extends RadioButtonPickerFragment implements @VisibleForTesting FooterPreference mDisableOptionsPreference; + @VisibleForTesting + FooterPreference mPowerConsumptionPreference; + @VisibleForTesting AdaptiveSleepPermissionPreferenceController mAdaptiveSleepPermissionController; @@ -216,6 +219,9 @@ public class ScreenTimeoutSettings extends RadioButtonPickerFragment implements if (mAdmin != null) { setupDisabledFooterPreference(); screen.addPreference(mDisableOptionsPreference); + } else { + setupPowerConsumptionFooterPreference(); + screen.addPreference(mPowerConsumptionPreference); } } @@ -236,8 +242,20 @@ public class ScreenTimeoutSettings extends RadioButtonPickerFragment implements 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 c33bd21b1aa..9e193ffc97e 100644 --- a/tests/robotests/src/com/android/settings/display/ScreenTimeoutSettingsTest.java +++ b/tests/robotests/src/com/android/settings/display/ScreenTimeoutSettingsTest.java @@ -92,6 +92,9 @@ public class ScreenTimeoutSettingsTest { @Mock FooterPreference mDisableOptionsPreference; + @Mock + FooterPreference mPowerConsumptionPreference; + @Mock private PackageManager mPackageManager; @@ -182,11 +185,28 @@ public class ScreenTimeoutSettingsTest { 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