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

Commit 703c8d30 authored by Josh Tsuji's avatar Josh Tsuji Committed by Android (Google) Code Review
Browse files

Merge "Don't return true for controlling screen off once we've already...

Merge "Don't return true for controlling screen off once we've already returned false for this sleep." into sc-dev
parents 0a62adda 3a982ee1
Loading
Loading
Loading
Loading
+25 −1
Original line number Diff line number Diff line
@@ -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
        }