Merge changes from topic "am-e1ddd085b37a46ceb84b4ab84ea62863" into main
* changes:
[automerger skipped] Merge changes from topic "freezer_binder_callback-udc-qpr-dev" into udc-qpr-dev am: 4763a13117 am: 78ec88d891 -s ours
[automerger skipped] Add callback for binder transaction errors am: 7b3c52a3ee am: b6d224f34e -s ours
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index c632a2a..f488197 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -2712,6 +2712,12 @@
turned off and the screen off animation has been performed. -->
<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. -->
<bool name="config_dozePulsePickup">false</bool>
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index cd3844c..c9c92b3 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -1956,6 +1956,7 @@
<java-symbol type="bool" name="config_enableNightMode" />
<java-symbol type="bool" name="config_tintNotificationActionButtons" />
<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_defaultAdasGnssLocationEnabled" />
<java-symbol type="bool" name="config_enableFusedLocationOverlay" />
diff --git a/services/core/java/com/android/server/power/PowerGroup.java b/services/core/java/com/android/server/power/PowerGroup.java
index 3dbd2f8..6a0fe90 100644
--- a/services/core/java/com/android/server/power/PowerGroup.java
+++ b/services/core/java/com/android/server/power/PowerGroup.java
@@ -395,7 +395,8 @@
@VisibleForTesting
int getDesiredScreenPolicyLocked(boolean quiescent, boolean dozeAfterScreenOff,
- boolean bootCompleted, boolean screenBrightnessBoostInProgress) {
+ boolean bootCompleted, boolean screenBrightnessBoostInProgress,
+ boolean brightWhenDozing) {
final int wakefulness = getWakefulnessLocked();
final int wakeLockSummary = getWakeLockSummaryLocked();
if (wakefulness == WAKEFULNESS_ASLEEP || quiescent) {
@@ -407,8 +408,12 @@
if (dozeAfterScreenOff) {
return DisplayPowerRequest.POLICY_OFF;
}
+ if (brightWhenDozing) {
+ return DisplayPowerRequest.POLICY_BRIGHT;
+ }
// 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
@@ -429,9 +434,10 @@
boolean boostScreenBrightness, int dozeScreenState, float dozeScreenBrightness,
boolean overrideDrawWakeLock, PowerSaveState powerSaverState, boolean quiescent,
boolean dozeAfterScreenOff, boolean bootCompleted,
- boolean screenBrightnessBoostInProgress, boolean waitForNegativeProximity) {
+ boolean screenBrightnessBoostInProgress, boolean waitForNegativeProximity,
+ boolean brightWhenDozing) {
mDisplayPowerRequest.policy = getDesiredScreenPolicyLocked(quiescent, dozeAfterScreenOff,
- bootCompleted, screenBrightnessBoostInProgress);
+ bootCompleted, screenBrightnessBoostInProgress, brightWhenDozing);
mDisplayPowerRequest.screenBrightnessOverride = screenBrightnessOverride;
mDisplayPowerRequest.useProximitySensor = useProximitySensor;
mDisplayPowerRequest.boostScreenBrightness = boostScreenBrightness;
diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java
index 8ce0c72..ec5172f 100644
--- a/services/core/java/com/android/server/power/PowerManagerService.java
+++ b/services/core/java/com/android/server/power/PowerManagerService.java
@@ -546,6 +546,10 @@
// True if doze should not be started until after the screen off transition.
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.
private long mMinimumScreenOffTimeoutConfig;
@@ -1492,6 +1496,8 @@
com.android.internal.R.bool.config_dreamsDisabledByAmbientModeSuppressionConfig);
mDozeAfterScreenOff = resources.getBoolean(
com.android.internal.R.bool.config_dozeAfterScreenOffByDefault);
+ mBrightWhenDozingConfig = resources.getBoolean(
+ com.android.internal.R.bool.config_brightWhenDozing);
mMinimumScreenOffTimeoutConfig = resources.getInteger(
com.android.internal.R.integer.config_minimumScreenOffTimeout);
mMaximumScreenDimDurationConfig = resources.getInteger(
@@ -3560,7 +3566,8 @@
.getBatterySaverPolicy(ServiceType.SCREEN_BRIGHTNESS)
: new PowerSaveState.Builder().build(),
sQuiescent, mDozeAfterScreenOff, mBootCompleted,
- mScreenBrightnessBoostInProgress, mRequestWaitForNegativeProximity);
+ mScreenBrightnessBoostInProgress, mRequestWaitForNegativeProximity,
+ mBrightWhenDozingConfig);
int wakefulness = powerGroup.getWakefulnessLocked();
if (DEBUG_SPEW) {
Slog.d(TAG, "updateDisplayPowerStateLocked: displayReady=" + ready
@@ -3635,7 +3642,7 @@
int getDesiredScreenPolicyLocked(int groupId) {
return mPowerGroups.get(groupId).getDesiredScreenPolicyLocked(sQuiescent,
mDozeAfterScreenOff, mBootCompleted,
- mScreenBrightnessBoostInProgress);
+ mScreenBrightnessBoostInProgress, mBrightWhenDozingConfig);
}
@VisibleForTesting
@@ -4655,6 +4662,7 @@
pw.println(" mDreamsActivateOnSleepSetting=" + mDreamsActivateOnSleepSetting);
pw.println(" mDreamsActivateOnDockSetting=" + mDreamsActivateOnDockSetting);
pw.println(" mDozeAfterScreenOff=" + mDozeAfterScreenOff);
+ pw.println(" mBrightWhenDozingConfig=" + mBrightWhenDozingConfig);
pw.println(" mMinimumScreenOffTimeoutConfig=" + mMinimumScreenOffTimeoutConfig);
pw.println(" mMaximumScreenDimDurationConfig=" + mMaximumScreenDimDurationConfig);
pw.println(" mMaximumScreenDimRatioConfig=" + mMaximumScreenDimRatioConfig);
diff --git a/services/tests/powerservicetests/src/com/android/server/power/PowerGroupTest.java b/services/tests/powerservicetests/src/com/android/server/power/PowerGroupTest.java
index fe31b9c..a776eec 100644
--- a/services/tests/powerservicetests/src/com/android/server/power/PowerGroupTest.java
+++ b/services/tests/powerservicetests/src/com/android/server/power/PowerGroupTest.java
@@ -267,7 +267,8 @@
/* dozeAfterScreenOff= */ false,
/* bootCompleted= */ true,
/* screenBrightnessBoostInProgress= */ false,
- /* waitForNegativeProximity= */ false);
+ /* waitForNegativeProximity= */ false,
+ /* brightWhenDozing= */ false);
DisplayManagerInternal.DisplayPowerRequest displayPowerRequest =
mPowerGroup.mDisplayPowerRequest;
assertThat(displayPowerRequest.policy).isEqualTo(POLICY_DIM);
@@ -305,7 +306,8 @@
/* dozeAfterScreenOff= */ false,
/* bootCompleted= */ true,
/* screenBrightnessBoostInProgress= */ false,
- /* waitForNegativeProximity= */ false);
+ /* waitForNegativeProximity= */ false,
+ /* brightWhenDozing= */ false);
DisplayManagerInternal.DisplayPowerRequest displayPowerRequest =
mPowerGroup.mDisplayPowerRequest;
assertThat(displayPowerRequest.policy).isEqualTo(POLICY_DOZE);
@@ -342,7 +344,8 @@
/* dozeAfterScreenOff= */ true,
/* bootCompleted= */ true,
/* screenBrightnessBoostInProgress= */ false,
- /* waitForNegativeProximity= */ false);
+ /* waitForNegativeProximity= */ false,
+ /* brightWhenDozing= */ false);
DisplayManagerInternal.DisplayPowerRequest displayPowerRequest =
mPowerGroup.mDisplayPowerRequest;
assertThat(displayPowerRequest.policy).isEqualTo(POLICY_OFF);
@@ -378,7 +381,8 @@
/* dozeAfterScreenOff= */ true,
/* bootCompleted= */ true,
/* screenBrightnessBoostInProgress= */ false,
- /* waitForNegativeProximity= */ false);
+ /* waitForNegativeProximity= */ false,
+ /* brightWhenDozing= */ false);
DisplayManagerInternal.DisplayPowerRequest displayPowerRequest =
mPowerGroup.mDisplayPowerRequest;
assertThat(displayPowerRequest.policy).isEqualTo(POLICY_OFF);
@@ -414,7 +418,8 @@
/* dozeAfterScreenOff= */ false,
/* bootCompleted= */ true,
/* screenBrightnessBoostInProgress= */ false,
- /* waitForNegativeProximity= */ false);
+ /* waitForNegativeProximity= */ false,
+ /* brightWhenDozing= */ false);
DisplayManagerInternal.DisplayPowerRequest displayPowerRequest =
mPowerGroup.mDisplayPowerRequest;
assertThat(displayPowerRequest.policy).isEqualTo(POLICY_OFF);
@@ -451,7 +456,8 @@
/* dozeAfterScreenOff= */ false,
/* bootCompleted= */ true,
/* screenBrightnessBoostInProgress= */ false,
- /* waitForNegativeProximity= */ false);
+ /* waitForNegativeProximity= */ false,
+ /* brightWhenDozing= */ false);
DisplayManagerInternal.DisplayPowerRequest displayPowerRequest =
mPowerGroup.mDisplayPowerRequest;
assertThat(displayPowerRequest.policy).isEqualTo(POLICY_BRIGHT);
@@ -486,7 +492,8 @@
/* dozeAfterScreenOff= */ false,
/* bootCompleted= */ false,
/* screenBrightnessBoostInProgress= */ false,
- /* waitForNegativeProximity= */ false);
+ /* waitForNegativeProximity= */ false,
+ /* brightWhenDozing= */ false);
DisplayManagerInternal.DisplayPowerRequest displayPowerRequest =
mPowerGroup.mDisplayPowerRequest;
assertThat(displayPowerRequest.policy).isEqualTo(POLICY_BRIGHT);
@@ -522,7 +529,8 @@
/* dozeAfterScreenOff= */ false,
/* bootCompleted= */ true,
/* screenBrightnessBoostInProgress= */ false,
- /* waitForNegativeProximity= */ false);
+ /* waitForNegativeProximity= */ false,
+ /* brightWhenDozing= */ false);
DisplayManagerInternal.DisplayPowerRequest displayPowerRequest =
mPowerGroup.mDisplayPowerRequest;
assertThat(displayPowerRequest.policy).isEqualTo(POLICY_BRIGHT);
@@ -557,7 +565,8 @@
/* dozeAfterScreenOff= */ false,
/* bootCompleted= */ true,
/* screenBrightnessBoostInProgress= */ true,
- /* waitForNegativeProximity= */ false);
+ /* waitForNegativeProximity= */ false,
+ /* brightWhenDozing= */ false);
DisplayManagerInternal.DisplayPowerRequest displayPowerRequest =
mPowerGroup.mDisplayPowerRequest;
assertThat(displayPowerRequest.policy).isEqualTo(POLICY_BRIGHT);