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

Commit 3a23e91c authored by András Kurucz's avatar András Kurucz
Browse files

Reset NSSL translationY after a transision gets cancelled

We update the translationY of the NSSL upon multiple transitions. If the
Occluded -> LockScreen transition is cancelled, there is no other
transition that is taking over. It causes the NSSL to get stuck with some negative translateY value. This caused the Notifications and the NotificationShelf to be shifted slightly upwards.

This fix resets the translation to 0 if the transition was interrupted
and not completed successfully.

Fixes: 273591201
Test: atest OccludedToLockscreenTransitionViewModelTest
Change-Id: If0c162a7f1b8a2cf3d261692f5ce333331c36a7b
parent a579d608
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@ constructor(
            duration = TO_LOCKSCREEN_DURATION,
            onStep = { value -> -translatePx + value * translatePx },
            interpolator = EMPHASIZED_DECELERATE,
            onCancel = { 0f },
        )
    }

+15 −0
Original line number Diff line number Diff line
@@ -92,6 +92,21 @@ class OccludedToLockscreenTransitionViewModelTest : SysuiTestCase() {
            job.cancel()
        }

    @Test
    fun lockscreenTranslationYResettedAfterJobCancelled() =
        runTest(UnconfinedTestDispatcher()) {
            val values = mutableListOf<Float>()

            val pixels = 100
            val job =
                underTest.lockscreenTranslationY(pixels).onEach { values.add(it) }.launchIn(this)
            repository.sendTransitionStep(step(0.5f, TransitionState.CANCELED))

            assertThat(values.last()).isEqualTo(0f)

            job.cancel()
        }

    private fun step(
        value: Float,
        state: TransitionState = TransitionState.RUNNING