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

Commit 1685ac79 authored by Sherry Zhou's avatar Sherry Zhou Committed by Android (Google) Code Review
Browse files

Merge "Fix clock staying in AOD state in LS when transitioning from bouncer and camera" into main

parents 7dca5acb 8ab059aa
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -432,6 +432,7 @@ constructor(
                    if (MigrateClocksToBlueprint.isEnabled) {
                        listenForDozeAmountTransition(this)
                        listenForAnyStateToAodTransition(this)
                        listenForAnyStateToLockscreenTransition(this)
                    } else {
                        listenForDozeAmount(this)
                    }
@@ -565,6 +566,17 @@ constructor(
        }
    }

    @VisibleForTesting
    internal fun listenForAnyStateToLockscreenTransition(scope: CoroutineScope): Job {
        return scope.launch("$TAG#listenForAnyStateToLockscreenTransition") {
            keyguardTransitionInteractor
                    .transitionStepsToState(LOCKSCREEN)
                    .filter { it.transitionState == TransitionState.STARTED }
                    .filter { it.from != AOD }
                    .collect { handleDoze(0f) }
        }
    }

    @VisibleForTesting
    internal fun listenForDozing(scope: CoroutineScope): Job {
        return scope.launch("$TAG#listenForDozing") {
+42 −0
Original line number Diff line number Diff line
@@ -361,6 +361,27 @@ class ClockEventControllerTest : SysuiTestCase() {
            job.cancel()
        }

    @Test
    fun listenForTransitionToLSFromOccluded_updatesClockDozeAmountToOne() =
        runBlocking(IMMEDIATE) {
            val transitionStep = MutableStateFlow(TransitionStep())
            whenever(keyguardTransitionInteractor.transitionStepsToState(KeyguardState.LOCKSCREEN))
                    .thenReturn(transitionStep)

            val job = underTest.listenForAnyStateToLockscreenTransition(this)
            transitionStep.value =
                    TransitionStep(
                            from = KeyguardState.OCCLUDED,
                            to = KeyguardState.LOCKSCREEN,
                            transitionState = TransitionState.STARTED,
                    )
            yield()

            verify(animations, times(2)).doze(0f)

            job.cancel()
        }

    @Test
    fun listenForTransitionToAodFromLockscreen_neverUpdatesClockDozeAmount() =
        runBlocking(IMMEDIATE) {
@@ -382,6 +403,27 @@ class ClockEventControllerTest : SysuiTestCase() {
                job.cancel()
            }

    @Test
    fun listenForAnyStateToLockscreenTransition_neverUpdatesClockDozeAmount() =
        runBlocking(IMMEDIATE) {
            val transitionStep = MutableStateFlow(TransitionStep())
            whenever(keyguardTransitionInteractor.transitionStepsToState(KeyguardState.LOCKSCREEN))
                    .thenReturn(transitionStep)

            val job = underTest.listenForAnyStateToLockscreenTransition(this)
            transitionStep.value =
                    TransitionStep(
                            from = KeyguardState.AOD,
                            to = KeyguardState.LOCKSCREEN,
                            transitionState = TransitionState.STARTED,
                    )
            yield()

            verify(animations, never()).doze(0f)

            job.cancel()
        }

    @Test
    fun unregisterListeners_validate() =
        runBlocking(IMMEDIATE) {