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

Commit a695dd4c authored by Beverly's avatar Beverly
Browse files

onCancel transition update deviceEntryIconParentViewAlpha to onFinished alpha

If the transition is cancelled, the next transition that starts will
start from the end state of the cancelled transition.

Also update deviceEntryBackgroundViewAlpha to the onFinished alpha
onCancel.

Fixes: 350192819
Flag: EXEMPT bugfix
Test: atest AodToLockscreenTransitionViewModelTest LockscreenToOccludedTransitionViewModelTest
Change-Id: Iea55edb4bf203910c9356adff7b36bf65a222d1a
parent a5971de4
Loading
Loading
Loading
Loading
+37 −0
Original line number Diff line number Diff line
@@ -156,6 +156,43 @@ class AodToLockscreenTransitionViewModelTest(flags: FlagsParameterization) : Sys
            assertThat(deviceEntryBackgroundViewAlpha).isEqualTo(1f)
        }

    @Test
    fun deviceEntryBackgroundView_onCancel() =
        testScope.runTest {
            fingerprintPropertyRepository.supportsUdfps()
            val deviceEntryBackgroundViewAlpha by
                collectLastValue(underTest.deviceEntryBackgroundViewAlpha)
            runCurrent()

            // GIVEN transition START
            repository.sendTransitionStep(step(0f, TransitionState.STARTED))
            assertThat(deviceEntryBackgroundViewAlpha).isEqualTo(0f)

            // WHEN transition is cancelled
            repository.sendTransitionStep(step(.1f, TransitionState.CANCELED))

            // THEN alpha is immediately set to 1f (expected lockscreen alpha state)
            assertThat(deviceEntryBackgroundViewAlpha).isEqualTo(1f)
        }

    @Test
    fun deviceEntryParentViewAlpha_onCancel() =
        testScope.runTest {
            fingerprintPropertyRepository.supportsUdfps()
            val deviceEntryBackgroundViewAlpha by
                collectLastValue(underTest.deviceEntryParentViewAlpha)
            runCurrent()

            // GIVEN transition START
            repository.sendTransitionStep(step(0f, TransitionState.STARTED))

            // WHEN transition is cancelled
            repository.sendTransitionStep(step(.1f, TransitionState.CANCELED))

            // THEN alpha is immediately set to 1f (expected lockscreen alpha state)
            assertThat(deviceEntryBackgroundViewAlpha).isEqualTo(1f)
        }

    private fun step(
        value: Float,
        state: TransitionState = TransitionState.RUNNING
+18 −0
Original line number Diff line number Diff line
@@ -201,6 +201,24 @@ class LockscreenToOccludedTransitionViewModelTest(flags: FlagsParameterization)
            assertThat(actual).isEqualTo(0f)
        }

    @Test
    fun deviceEntryParentViewAlpha_shadeNotExpanded_onCancel() =
        testScope.runTest {
            val actual by collectLastValue(underTest.deviceEntryParentViewAlpha)
            shadeExpanded(false)
            runCurrent()

            // START transition
            repository.sendTransitionStep(step(0f, TransitionState.STARTED))
            assertThat(actual).isEqualTo(1f)

            // WHEN transition is canceled
            repository.sendTransitionStep(step(1f, TransitionState.CANCELED))

            // THEN alpha is immediately set to 0f
            assertThat(actual).isEqualTo(0f)
        }

    private fun step(
        value: Float,
        state: TransitionState = TransitionState.RUNNING,
+6 −1
Original line number Diff line number Diff line
@@ -177,7 +177,12 @@ constructor(
         * Immediately (after 1ms) emits the given value for every step of the KeyguardTransition.
         */
        fun immediatelyTransitionTo(value: Float): Flow<Float> {
            return sharedFlow(duration = 1.milliseconds, onStep = { value }, onFinish = { value })
            return sharedFlow(
                duration = 1.milliseconds,
                onStep = { value },
                onCancel = { value },
                onFinish = { value }
            )
        }
    }
}
+1 −0
Original line number Diff line number Diff line
@@ -51,6 +51,7 @@ constructor(
        transitionAnimation.sharedFlow(
            duration = FromAlternateBouncerTransitionInteractor.TO_AOD_DURATION,
            onStep = { 1 - it },
            onCancel = { 0f },
            onFinish = { 0f },
        )

+2 −4
Original line number Diff line number Diff line
@@ -104,12 +104,10 @@ constructor(
        transitionAnimation.sharedFlow(
            duration = 250.milliseconds,
            onStep = { it },
            onCancel = { 1f },
            onFinish = { 1f },
        )

    override val deviceEntryParentViewAlpha: Flow<Float> =
        transitionAnimation.sharedFlow(
            duration = 500.milliseconds,
            onStep = { 1f },
        )
        transitionAnimation.immediatelyTransitionTo(1f)
}
Loading