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

Commit daf92375 authored by Josh Yang's avatar Josh Yang
Browse files

Add a config_brightWhenDozing to suppress the dim state when we entered

dozing wakefulness but haven't started dream service yet.

Normally when we enters dozing wakefulness state, the power policy will
be set to POLICY_DIM for a short period of time before dream service
started. This config will suppress this effect and force the policy to
be set to POLICY_BRIGHT and completely get rid of the dim temporary
state.

This config is expected to be used when config_maximumScreenDimDuration
is set to 0.

Bug: 280324422
Test: manual test AOD on and AOD off case. Dim state is skipped.
Test: atest PowerGroupTest
Change-Id: I5f060e46389dee70ce945eb2e84f45d5927ca606
(cherry picked from commit 971a3e143019b1ee93881f87bd75ee8c00a226f8)
parent 8efcf7b3
Loading
Loading
Loading
Loading
+6 −0
Original line number Original line Diff line number Diff line
@@ -2670,6 +2670,12 @@
         turned off and the screen off animation has been performed. -->
         turned off and the screen off animation has been performed. -->
    <bool name="config_dozeAfterScreenOffByDefault">false</bool>
    <bool name="config_dozeAfterScreenOffByDefault">false</bool>


    <!-- If true, bright policy will be applied when we have entered dozing wakefulness but haven't
         started doze component. This can be used to suppress the temporary dim state before
         starting a dream service. This is typically used together with
         config_maximumScreenDimDuration set to 0 to completely suppress dim effect. -->
    <bool name="config_brightWhenDozing">false</bool>

    <!-- Doze: should the TYPE_PICK_UP_GESTURE sensor be used as a pulse signal. -->
    <!-- Doze: should the TYPE_PICK_UP_GESTURE sensor be used as a pulse signal. -->
    <bool name="config_dozePulsePickup">false</bool>
    <bool name="config_dozePulsePickup">false</bool>


+1 −0
Original line number Original line Diff line number Diff line
@@ -1949,6 +1949,7 @@
  <java-symbol type="bool" name="config_enableNightMode" />
  <java-symbol type="bool" name="config_enableNightMode" />
  <java-symbol type="bool" name="config_tintNotificationActionButtons" />
  <java-symbol type="bool" name="config_tintNotificationActionButtons" />
  <java-symbol type="bool" name="config_dozeAfterScreenOffByDefault" />
  <java-symbol type="bool" name="config_dozeAfterScreenOffByDefault" />
  <java-symbol type="bool" name="config_brightWhenDozing" />
  <java-symbol type="bool" name="config_enableActivityRecognitionHardwareOverlay" />
  <java-symbol type="bool" name="config_enableActivityRecognitionHardwareOverlay" />
  <java-symbol type="bool" name="config_defaultAdasGnssLocationEnabled" />
  <java-symbol type="bool" name="config_defaultAdasGnssLocationEnabled" />
  <java-symbol type="bool" name="config_enableFusedLocationOverlay" />
  <java-symbol type="bool" name="config_enableFusedLocationOverlay" />
+10 −4
Original line number Original line Diff line number Diff line
@@ -395,7 +395,8 @@ public class PowerGroup {


    @VisibleForTesting
    @VisibleForTesting
    int getDesiredScreenPolicyLocked(boolean quiescent, boolean dozeAfterScreenOff,
    int getDesiredScreenPolicyLocked(boolean quiescent, boolean dozeAfterScreenOff,
            boolean bootCompleted, boolean screenBrightnessBoostInProgress) {
            boolean bootCompleted, boolean screenBrightnessBoostInProgress,
            boolean brightWhenDozing) {
        final int wakefulness = getWakefulnessLocked();
        final int wakefulness = getWakefulnessLocked();
        final int wakeLockSummary = getWakeLockSummaryLocked();
        final int wakeLockSummary = getWakeLockSummaryLocked();
        if (wakefulness == WAKEFULNESS_ASLEEP || quiescent) {
        if (wakefulness == WAKEFULNESS_ASLEEP || quiescent) {
@@ -407,8 +408,12 @@ public class PowerGroup {
            if (dozeAfterScreenOff) {
            if (dozeAfterScreenOff) {
                return DisplayPowerRequest.POLICY_OFF;
                return DisplayPowerRequest.POLICY_OFF;
            }
            }
            if (brightWhenDozing) {
                return DisplayPowerRequest.POLICY_BRIGHT;
            }
            // Fall through and preserve the current screen policy if not configured to
            // Fall through and preserve the current screen policy if not configured to
            // doze after screen off.  This causes the screen off transition to be skipped.
            // bright when dozing or doze after screen off.  This causes the screen off transition
            // to be skipped.
        }
        }


        if ((wakeLockSummary & WAKE_LOCK_SCREEN_BRIGHT) != 0
        if ((wakeLockSummary & WAKE_LOCK_SCREEN_BRIGHT) != 0
@@ -429,9 +434,10 @@ public class PowerGroup {
            boolean boostScreenBrightness, int dozeScreenState, float dozeScreenBrightness,
            boolean boostScreenBrightness, int dozeScreenState, float dozeScreenBrightness,
            boolean overrideDrawWakeLock, PowerSaveState powerSaverState, boolean quiescent,
            boolean overrideDrawWakeLock, PowerSaveState powerSaverState, boolean quiescent,
            boolean dozeAfterScreenOff, boolean bootCompleted,
            boolean dozeAfterScreenOff, boolean bootCompleted,
            boolean screenBrightnessBoostInProgress, boolean waitForNegativeProximity) {
            boolean screenBrightnessBoostInProgress, boolean waitForNegativeProximity,
            boolean brightWhenDozing) {
        mDisplayPowerRequest.policy = getDesiredScreenPolicyLocked(quiescent, dozeAfterScreenOff,
        mDisplayPowerRequest.policy = getDesiredScreenPolicyLocked(quiescent, dozeAfterScreenOff,
                bootCompleted, screenBrightnessBoostInProgress);
                bootCompleted, screenBrightnessBoostInProgress, brightWhenDozing);
        mDisplayPowerRequest.screenBrightnessOverride = screenBrightnessOverride;
        mDisplayPowerRequest.screenBrightnessOverride = screenBrightnessOverride;
        mDisplayPowerRequest.useProximitySensor = useProximitySensor;
        mDisplayPowerRequest.useProximitySensor = useProximitySensor;
        mDisplayPowerRequest.boostScreenBrightness = boostScreenBrightness;
        mDisplayPowerRequest.boostScreenBrightness = boostScreenBrightness;
+10 −2
Original line number Original line Diff line number Diff line
@@ -545,6 +545,10 @@ public final class PowerManagerService extends SystemService
    // True if doze should not be started until after the screen off transition.
    // True if doze should not be started until after the screen off transition.
    private boolean mDozeAfterScreenOff;
    private boolean mDozeAfterScreenOff;


    // True if bright policy should be applied when we have entered dozing wakefulness but haven't
    // started doze component.
    private boolean mBrightWhenDozingConfig;

    // The minimum screen off timeout, in milliseconds.
    // The minimum screen off timeout, in milliseconds.
    private long mMinimumScreenOffTimeoutConfig;
    private long mMinimumScreenOffTimeoutConfig;


@@ -1489,6 +1493,8 @@ public final class PowerManagerService extends SystemService
                com.android.internal.R.bool.config_dreamsDisabledByAmbientModeSuppressionConfig);
                com.android.internal.R.bool.config_dreamsDisabledByAmbientModeSuppressionConfig);
        mDozeAfterScreenOff = resources.getBoolean(
        mDozeAfterScreenOff = resources.getBoolean(
                com.android.internal.R.bool.config_dozeAfterScreenOffByDefault);
                com.android.internal.R.bool.config_dozeAfterScreenOffByDefault);
        mBrightWhenDozingConfig = resources.getBoolean(
                com.android.internal.R.bool.config_brightWhenDozing);
        mMinimumScreenOffTimeoutConfig = resources.getInteger(
        mMinimumScreenOffTimeoutConfig = resources.getInteger(
                com.android.internal.R.integer.config_minimumScreenOffTimeout);
                com.android.internal.R.integer.config_minimumScreenOffTimeout);
        mMaximumScreenDimDurationConfig = resources.getInteger(
        mMaximumScreenDimDurationConfig = resources.getInteger(
@@ -3557,7 +3563,8 @@ public final class PowerManagerService extends SystemService
                                        .getBatterySaverPolicy(ServiceType.SCREEN_BRIGHTNESS)
                                        .getBatterySaverPolicy(ServiceType.SCREEN_BRIGHTNESS)
                                : new PowerSaveState.Builder().build(),
                                : new PowerSaveState.Builder().build(),
                        sQuiescent, mDozeAfterScreenOff, mBootCompleted,
                        sQuiescent, mDozeAfterScreenOff, mBootCompleted,
                        mScreenBrightnessBoostInProgress, mRequestWaitForNegativeProximity);
                        mScreenBrightnessBoostInProgress, mRequestWaitForNegativeProximity,
                        mBrightWhenDozingConfig);
                int wakefulness = powerGroup.getWakefulnessLocked();
                int wakefulness = powerGroup.getWakefulnessLocked();
                if (DEBUG_SPEW) {
                if (DEBUG_SPEW) {
                    Slog.d(TAG, "updateDisplayPowerStateLocked: displayReady=" + ready
                    Slog.d(TAG, "updateDisplayPowerStateLocked: displayReady=" + ready
@@ -3632,7 +3639,7 @@ public final class PowerManagerService extends SystemService
    int getDesiredScreenPolicyLocked(int groupId) {
    int getDesiredScreenPolicyLocked(int groupId) {
        return mPowerGroups.get(groupId).getDesiredScreenPolicyLocked(sQuiescent,
        return mPowerGroups.get(groupId).getDesiredScreenPolicyLocked(sQuiescent,
                mDozeAfterScreenOff, mBootCompleted,
                mDozeAfterScreenOff, mBootCompleted,
                mScreenBrightnessBoostInProgress);
                mScreenBrightnessBoostInProgress, mBrightWhenDozingConfig);
    }
    }


    @VisibleForTesting
    @VisibleForTesting
@@ -4643,6 +4650,7 @@ public final class PowerManagerService extends SystemService
            pw.println("  mDreamsActivateOnSleepSetting=" + mDreamsActivateOnSleepSetting);
            pw.println("  mDreamsActivateOnSleepSetting=" + mDreamsActivateOnSleepSetting);
            pw.println("  mDreamsActivateOnDockSetting=" + mDreamsActivateOnDockSetting);
            pw.println("  mDreamsActivateOnDockSetting=" + mDreamsActivateOnDockSetting);
            pw.println("  mDozeAfterScreenOff=" + mDozeAfterScreenOff);
            pw.println("  mDozeAfterScreenOff=" + mDozeAfterScreenOff);
            pw.println("  mBrightWhenDozingConfig=" + mBrightWhenDozingConfig);
            pw.println("  mMinimumScreenOffTimeoutConfig=" + mMinimumScreenOffTimeoutConfig);
            pw.println("  mMinimumScreenOffTimeoutConfig=" + mMinimumScreenOffTimeoutConfig);
            pw.println("  mMaximumScreenDimDurationConfig=" + mMaximumScreenDimDurationConfig);
            pw.println("  mMaximumScreenDimDurationConfig=" + mMaximumScreenDimDurationConfig);
            pw.println("  mMaximumScreenDimRatioConfig=" + mMaximumScreenDimRatioConfig);
            pw.println("  mMaximumScreenDimRatioConfig=" + mMaximumScreenDimRatioConfig);
+18 −9
Original line number Original line Diff line number Diff line
@@ -267,7 +267,8 @@ public class PowerGroupTest {
                /* dozeAfterScreenOff= */ false,
                /* dozeAfterScreenOff= */ false,
                /* bootCompleted= */ true,
                /* bootCompleted= */ true,
                /* screenBrightnessBoostInProgress= */ false,
                /* screenBrightnessBoostInProgress= */ false,
                /* waitForNegativeProximity= */ false);
                /* waitForNegativeProximity= */ false,
                /* brightWhenDozing= */ false);
        DisplayManagerInternal.DisplayPowerRequest displayPowerRequest =
        DisplayManagerInternal.DisplayPowerRequest displayPowerRequest =
                mPowerGroup.mDisplayPowerRequest;
                mPowerGroup.mDisplayPowerRequest;
        assertThat(displayPowerRequest.policy).isEqualTo(POLICY_DIM);
        assertThat(displayPowerRequest.policy).isEqualTo(POLICY_DIM);
@@ -305,7 +306,8 @@ public class PowerGroupTest {
                /* dozeAfterScreenOff= */ false,
                /* dozeAfterScreenOff= */ false,
                /* bootCompleted= */ true,
                /* bootCompleted= */ true,
                /* screenBrightnessBoostInProgress= */ false,
                /* screenBrightnessBoostInProgress= */ false,
                /* waitForNegativeProximity= */ false);
                /* waitForNegativeProximity= */ false,
                /* brightWhenDozing= */ false);
        DisplayManagerInternal.DisplayPowerRequest displayPowerRequest =
        DisplayManagerInternal.DisplayPowerRequest displayPowerRequest =
                mPowerGroup.mDisplayPowerRequest;
                mPowerGroup.mDisplayPowerRequest;
        assertThat(displayPowerRequest.policy).isEqualTo(POLICY_DOZE);
        assertThat(displayPowerRequest.policy).isEqualTo(POLICY_DOZE);
@@ -342,7 +344,8 @@ public class PowerGroupTest {
                /* dozeAfterScreenOff= */ true,
                /* dozeAfterScreenOff= */ true,
                /* bootCompleted= */ true,
                /* bootCompleted= */ true,
                /* screenBrightnessBoostInProgress= */ false,
                /* screenBrightnessBoostInProgress= */ false,
                /* waitForNegativeProximity= */ false);
                /* waitForNegativeProximity= */ false,
                /* brightWhenDozing= */ false);
        DisplayManagerInternal.DisplayPowerRequest displayPowerRequest =
        DisplayManagerInternal.DisplayPowerRequest displayPowerRequest =
                mPowerGroup.mDisplayPowerRequest;
                mPowerGroup.mDisplayPowerRequest;
        assertThat(displayPowerRequest.policy).isEqualTo(POLICY_OFF);
        assertThat(displayPowerRequest.policy).isEqualTo(POLICY_OFF);
@@ -378,7 +381,8 @@ public class PowerGroupTest {
                /* dozeAfterScreenOff= */ true,
                /* dozeAfterScreenOff= */ true,
                /* bootCompleted= */ true,
                /* bootCompleted= */ true,
                /* screenBrightnessBoostInProgress= */ false,
                /* screenBrightnessBoostInProgress= */ false,
                /* waitForNegativeProximity= */ false);
                /* waitForNegativeProximity= */ false,
                /* brightWhenDozing= */ false);
        DisplayManagerInternal.DisplayPowerRequest displayPowerRequest =
        DisplayManagerInternal.DisplayPowerRequest displayPowerRequest =
                mPowerGroup.mDisplayPowerRequest;
                mPowerGroup.mDisplayPowerRequest;
        assertThat(displayPowerRequest.policy).isEqualTo(POLICY_OFF);
        assertThat(displayPowerRequest.policy).isEqualTo(POLICY_OFF);
@@ -414,7 +418,8 @@ public class PowerGroupTest {
                /* dozeAfterScreenOff= */ false,
                /* dozeAfterScreenOff= */ false,
                /* bootCompleted= */ true,
                /* bootCompleted= */ true,
                /* screenBrightnessBoostInProgress= */ false,
                /* screenBrightnessBoostInProgress= */ false,
                /* waitForNegativeProximity= */ false);
                /* waitForNegativeProximity= */ false,
                /* brightWhenDozing= */ false);
        DisplayManagerInternal.DisplayPowerRequest displayPowerRequest =
        DisplayManagerInternal.DisplayPowerRequest displayPowerRequest =
                mPowerGroup.mDisplayPowerRequest;
                mPowerGroup.mDisplayPowerRequest;
        assertThat(displayPowerRequest.policy).isEqualTo(POLICY_OFF);
        assertThat(displayPowerRequest.policy).isEqualTo(POLICY_OFF);
@@ -451,7 +456,8 @@ public class PowerGroupTest {
                /* dozeAfterScreenOff= */ false,
                /* dozeAfterScreenOff= */ false,
                /* bootCompleted= */ true,
                /* bootCompleted= */ true,
                /* screenBrightnessBoostInProgress= */ false,
                /* screenBrightnessBoostInProgress= */ false,
                /* waitForNegativeProximity= */ false);
                /* waitForNegativeProximity= */ false,
                /* brightWhenDozing= */ false);
        DisplayManagerInternal.DisplayPowerRequest displayPowerRequest =
        DisplayManagerInternal.DisplayPowerRequest displayPowerRequest =
                mPowerGroup.mDisplayPowerRequest;
                mPowerGroup.mDisplayPowerRequest;
        assertThat(displayPowerRequest.policy).isEqualTo(POLICY_BRIGHT);
        assertThat(displayPowerRequest.policy).isEqualTo(POLICY_BRIGHT);
@@ -486,7 +492,8 @@ public class PowerGroupTest {
                /* dozeAfterScreenOff= */ false,
                /* dozeAfterScreenOff= */ false,
                /* bootCompleted= */ false,
                /* bootCompleted= */ false,
                /* screenBrightnessBoostInProgress= */ false,
                /* screenBrightnessBoostInProgress= */ false,
                /* waitForNegativeProximity= */ false);
                /* waitForNegativeProximity= */ false,
                /* brightWhenDozing= */ false);
        DisplayManagerInternal.DisplayPowerRequest displayPowerRequest =
        DisplayManagerInternal.DisplayPowerRequest displayPowerRequest =
                mPowerGroup.mDisplayPowerRequest;
                mPowerGroup.mDisplayPowerRequest;
        assertThat(displayPowerRequest.policy).isEqualTo(POLICY_BRIGHT);
        assertThat(displayPowerRequest.policy).isEqualTo(POLICY_BRIGHT);
@@ -522,7 +529,8 @@ public class PowerGroupTest {
                /* dozeAfterScreenOff= */ false,
                /* dozeAfterScreenOff= */ false,
                /* bootCompleted= */ true,
                /* bootCompleted= */ true,
                /* screenBrightnessBoostInProgress= */ false,
                /* screenBrightnessBoostInProgress= */ false,
                /* waitForNegativeProximity= */ false);
                /* waitForNegativeProximity= */ false,
                /* brightWhenDozing= */ false);
        DisplayManagerInternal.DisplayPowerRequest displayPowerRequest =
        DisplayManagerInternal.DisplayPowerRequest displayPowerRequest =
                mPowerGroup.mDisplayPowerRequest;
                mPowerGroup.mDisplayPowerRequest;
        assertThat(displayPowerRequest.policy).isEqualTo(POLICY_BRIGHT);
        assertThat(displayPowerRequest.policy).isEqualTo(POLICY_BRIGHT);
@@ -557,7 +565,8 @@ public class PowerGroupTest {
                /* dozeAfterScreenOff= */ false,
                /* dozeAfterScreenOff= */ false,
                /* bootCompleted= */ true,
                /* bootCompleted= */ true,
                /* screenBrightnessBoostInProgress= */ true,
                /* screenBrightnessBoostInProgress= */ true,
                /* waitForNegativeProximity= */ false);
                /* waitForNegativeProximity= */ false,
                /* brightWhenDozing= */ false);
        DisplayManagerInternal.DisplayPowerRequest displayPowerRequest =
        DisplayManagerInternal.DisplayPowerRequest displayPowerRequest =
                mPowerGroup.mDisplayPowerRequest;
                mPowerGroup.mDisplayPowerRequest;
        assertThat(displayPowerRequest.policy).isEqualTo(POLICY_BRIGHT);
        assertThat(displayPowerRequest.policy).isEqualTo(POLICY_BRIGHT);