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

Commit a497af07 authored by Candice Lo's avatar Candice Lo Committed by Android (Google) Code Review
Browse files

Merge "fix(edt): considering power saver mode when updating the force invert type" into main

parents df0a89e2 e7502b9f
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -1648,7 +1648,7 @@ final class UiModeManagerService extends SystemService {
            return FORCE_INVERT_TYPE_OFF;
        }

        if (!mComputedNightMode) {
        if (!mComputedNightMode && !isPowerSaveNightModeOverrideNeeded()) {
            return FORCE_INVERT_TYPE_OFF;
        }

@@ -2120,7 +2120,7 @@ final class UiModeManagerService extends SystemService {
        updateForceInvertStates();

        // Override night mode in power save mode if not in car mode
        if (mPowerSave && !mCarModeEnabled && !mCar) {
        if (isPowerSaveNightModeOverrideNeeded()) {
            uiMode &= ~Configuration.UI_MODE_NIGHT_NO;
            uiMode |= Configuration.UI_MODE_NIGHT_YES;
        } else {
@@ -2142,6 +2142,13 @@ final class UiModeManagerService extends SystemService {
        }
    }

    /**
     * Override night mode in power save mode if not in car mode
     */
    private boolean isPowerSaveNightModeOverrideNeeded() {
        return mPowerSave && !mCarModeEnabled && !mCar;
    }

    @UiModeManager.NightMode
    private int getComputedUiModeConfiguration(int uiMode) {
        uiMode |= mComputedNightMode ? Configuration.UI_MODE_NIGHT_YES
+27 −0
Original line number Diff line number Diff line
@@ -1773,6 +1773,33 @@ public class UiModeManagerServiceTest extends UiServiceTestCase {
                .isEqualTo(FORCE_INVERT_PACKAGE_ALWAYS_DISABLE);
    }

    @Test
    @EnableFlags({ android.view.accessibility.Flags.FLAG_FORCE_INVERT_COLOR,
            android.app.Flags.FLAG_FIX_CONTRAST_AND_FORCE_INVERT_STATE_FOR_MULTI_USER })
    public void nightModeFalse_batterySaverOn_forceInvertTypeDark() throws RemoteException {
        int testUserId = 9;
        switchUser(testUserId);
        Settings.Secure.putIntForUser(
                mContentResolver,
                Settings.Secure.ACCESSIBILITY_FORCE_INVERT_COLOR_ENABLED,
                /* value= */ 1,
                /* userId = */ testUserId);
        mService.setNightMode(MODE_NIGHT_NO);
        when(mTwilightState.isNight()).thenReturn(false);
        mService.setNightMode(MODE_NIGHT_AUTO);

        // night NO
        assertFalse(isNightModeActivated());

        mPowerSaveConsumer.accept(
                new PowerSaveState.Builder().setBatterySaverEnabled(true).build());

        // night YES
        assertTrue(isNightModeActivated());
        assertThat(mUiManagerService.getForceInvertStateInternal(testUserId))
                .isEqualTo(FORCE_INVERT_TYPE_DARK);
    }

    private void switchUser(int userId) {
        SystemService.TargetUser user = mock(SystemService.TargetUser.class);
        doReturn(userId).when(user).getUserIdentifier();