Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 027db802 authored by mxyyiyi's avatar mxyyiyi
Browse files

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
parent 6ab64aa7
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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]-->
+18 −0
Original line number Diff line number Diff line
@@ -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.
        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
+20 −0
Original line number Diff line number Diff line
@@ -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