From 9d28e79926147ad12cd93e89cc5669bc5f1ca065 Mon Sep 17 00:00:00 2001 From: Josh Tsuji Date: Wed, 30 Jun 2021 14:57:48 -0400 Subject: [PATCH] Check whether doze is enabled before starting the screen off animation. We should always have been doing this, but it was masked by the WM color-fade screen off animation and was only visible in certain situations (such as AOD enabled but suppressed by power saver). Fixes: 192380279 Test: screen off with/without power saver Change-Id: I88e3479173cfd32675d45a2801e5ab7518b4d8b0 --- .../systemui/statusbar/phone/DozeParameters.java | 11 +++++++++-- .../phone/UnlockedScreenOffAnimationController.kt | 9 +++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java index c4d1abc1b74c8..68024726c5dec 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java @@ -223,8 +223,15 @@ public class DozeParameters implements TunerService.Tunable, * then abruptly showing AOD. */ public boolean shouldControlUnlockedScreenOff() { - return getAlwaysOn() && mFeatureFlags.useNewLockscreenAnimations() - && mUnlockedScreenOffAnimationController.shouldPlayUnlockedScreenOffAnimation(); + return mUnlockedScreenOffAnimationController.shouldPlayUnlockedScreenOffAnimation(); + } + + /** + * Whether we're capable of controlling the screen off animation if we want to. This isn't + * possible if AOD isn't even enabled or if the flag is disabled. + */ + public boolean canControlUnlockedScreenOff() { + return getAlwaysOn() && mFeatureFlags.useNewLockscreenAnimations(); } private boolean getBoolean(String propName, int resId) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/UnlockedScreenOffAnimationController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/UnlockedScreenOffAnimationController.kt index 6b00dd4b49e8c..c1f376286164a 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/UnlockedScreenOffAnimationController.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/UnlockedScreenOffAnimationController.kt @@ -45,7 +45,8 @@ class UnlockedScreenOffAnimationController @Inject constructor( private val wakefulnessLifecycle: WakefulnessLifecycle, private val statusBarStateControllerImpl: StatusBarStateControllerImpl, private val keyguardViewMediatorLazy: dagger.Lazy, - private val keyguardStateController: KeyguardStateController + private val keyguardStateController: KeyguardStateController, + private val dozeParameters: dagger.Lazy ) : WakefulnessLifecycle.Observer { private val handler = Handler() @@ -146,7 +147,7 @@ class UnlockedScreenOffAnimationController @Inject constructor( } override fun onStartedGoingToSleep() { - if (shouldPlayUnlockedScreenOffAnimation()) { + if (dozeParameters.get().shouldControlUnlockedScreenOff()) { lightRevealAnimationPlaying = true lightRevealAnimator.start() @@ -164,6 +165,10 @@ class UnlockedScreenOffAnimationController @Inject constructor( * on the current state of the device. */ fun shouldPlayUnlockedScreenOffAnimation(): Boolean { + if (!dozeParameters.get().canControlUnlockedScreenOff()) { + return false + } + // We only play the unlocked screen off animation if we are... unlocked. if (statusBarStateControllerImpl.state != StatusBarState.SHADE) { return false