Merge "Don't return true for controlling screen off once we've already returned false for this sleep." into sc-dev

This commit is contained in:
Josh Tsuji
2021-07-02 00:34:09 +00:00
committed by Android (Google) Code Review

View File

@@ -56,6 +56,13 @@ class UnlockedScreenOffAnimationController @Inject constructor(
private var lightRevealAnimationPlaying = false
private var aodUiAnimationPlaying = false
/**
* The result of our decision whether to play the screen off animation in
* [onStartedGoingToSleep], or null if we haven't made that decision yet or aren't going to
* sleep.
*/
private var decidedToAnimateGoingToSleep: Boolean? = null
private val lightRevealAnimator = ValueAnimator.ofFloat(1f, 0f).apply {
duration = LIGHT_REVEAL_ANIMATION_DURATION
interpolator = Interpolators.LINEAR
@@ -120,11 +127,17 @@ class UnlockedScreenOffAnimationController @Inject constructor(
// Run the callback given to us by the KeyguardVisibilityHelper.
after.run()
// Done going to sleep, reset this flag.
decidedToAnimateGoingToSleep = null
}
.start()
}
override fun onStartedWakingUp() {
// Waking up, so reset this flag.
decidedToAnimateGoingToSleep = null
lightRevealAnimator.cancel()
handler.removeCallbacksAndMessages(null)
}
@@ -148,6 +161,8 @@ class UnlockedScreenOffAnimationController @Inject constructor(
override fun onStartedGoingToSleep() {
if (dozeParameters.get().shouldControlUnlockedScreenOff()) {
decidedToAnimateGoingToSleep = true
lightRevealAnimationPlaying = true
lightRevealAnimator.start()
@@ -157,6 +172,8 @@ class UnlockedScreenOffAnimationController @Inject constructor(
// Show AOD. That'll cause the KeyguardVisibilityHelper to call #animateInKeyguard.
statusBar.notificationPanelViewController.showAodUi()
}, ANIMATE_IN_KEYGUARD_DELAY)
} else {
decidedToAnimateGoingToSleep = false
}
}
@@ -165,6 +182,12 @@ class UnlockedScreenOffAnimationController @Inject constructor(
* on the current state of the device.
*/
fun shouldPlayUnlockedScreenOffAnimation(): Boolean {
// If we explicitly already decided not to play the screen off animation, then never change
// our mind.
if (decidedToAnimateGoingToSleep == false) {
return false
}
if (!dozeParameters.get().canControlUnlockedScreenOff()) {
return false
}
@@ -178,7 +201,8 @@ class UnlockedScreenOffAnimationController @Inject constructor(
// already expanded and showing notifications/QS, the animation looks really messy. For now,
// disable it if the notification panel is expanded.
if (!this::statusBar.isInitialized ||
statusBar.notificationPanelViewController.isFullyExpanded) {
statusBar.notificationPanelViewController.isFullyExpanded ||
statusBar.notificationPanelViewController.isExpanding) {
return false
}