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

Commit c75b268e authored by Andreas Miko's avatar Andreas Miko Committed by Android (Google) Code Review
Browse files

Merge "[KTF integration] Fix AodAlphaViewModel" into main

parents b969fddf b9d10db5
Loading
Loading
Loading
Loading
+79 −0
Original line number Diff line number Diff line
@@ -23,12 +23,18 @@ import androidx.test.filters.SmallTest
import com.android.systemui.Flags as AConfigFlags
import com.android.systemui.SysuiTestCase
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.flags.DisableSceneContainer
import com.android.systemui.flags.EnableSceneContainer
import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository
import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository
import com.android.systemui.keyguard.shared.model.KeyguardState
import com.android.systemui.keyguard.shared.model.TransitionState
import com.android.systemui.keyguard.shared.model.TransitionStep
import com.android.systemui.kosmos.testScope
import com.android.systemui.scene.data.repository.Idle
import com.android.systemui.scene.data.repository.Transition
import com.android.systemui.scene.data.repository.setSceneTransition
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
@@ -67,6 +73,7 @@ class AodAlphaViewModelTest : SysuiTestCase() {
    }

    @Test
    @DisableSceneContainer
    fun alpha_WhenNotGone_clockMigrationFlagIsOff_emitsKeyguardAlpha() =
        testScope.runTest {
            mSetFlagsRule.disableFlags(AConfigFlags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
@@ -86,6 +93,7 @@ class AodAlphaViewModelTest : SysuiTestCase() {
        }

    @Test
    @DisableSceneContainer
    fun alpha_WhenGoneToAod() =
        testScope.runTest {
            val alpha by collectLastValue(underTest.alpha)
@@ -110,6 +118,35 @@ class AodAlphaViewModelTest : SysuiTestCase() {
        }

    @Test
    @EnableSceneContainer
    fun alpha_WhenGoneToAod_scene_container() =
        testScope.runTest {
            val alpha by collectLastValue(underTest.alpha)

            kosmos.setSceneTransition(Transition(from = Scenes.Lockscreen, to = Scenes.Gone))
            keyguardTransitionRepository.sendTransitionSteps(
                from = KeyguardState.AOD,
                to = KeyguardState.UNDEFINED,
                testScope = testScope,
            )
            kosmos.setSceneTransition(Idle(Scenes.Gone))
            assertThat(alpha).isEqualTo(0f)

            kosmos.setSceneTransition(Transition(from = Scenes.Gone, to = Scenes.Lockscreen))
            keyguardTransitionRepository.sendTransitionSteps(
                from = KeyguardState.UNDEFINED,
                to = KeyguardState.AOD,
                testScope = testScope,
            )
            enterFromTopAnimationAlpha.value = 0.5f
            assertThat(alpha).isEqualTo(0.5f)

            enterFromTopAnimationAlpha.value = 1f
            assertThat(alpha).isEqualTo(1f)
        }

    @Test
    @DisableSceneContainer
    fun alpha_WhenGoneToDozing() =
        testScope.runTest {
            val alpha by collectLastValue(underTest.alpha)
@@ -130,6 +167,25 @@ class AodAlphaViewModelTest : SysuiTestCase() {
        }

    @Test
    @EnableSceneContainer
    fun alpha_WhenGoneToDozing_scene_container() =
        testScope.runTest {
            val alpha by collectLastValue(underTest.alpha)

            kosmos.setSceneTransition(Idle(Scenes.Gone))
            assertThat(alpha).isEqualTo(0f)

            kosmos.setSceneTransition(Transition(from = Scenes.Gone, to = Scenes.Lockscreen))
            keyguardTransitionRepository.sendTransitionSteps(
                from = KeyguardState.UNDEFINED,
                to = KeyguardState.DOZING,
                testScope = testScope,
            )
            assertThat(alpha).isEqualTo(1f)
        }

    @Test
    @DisableSceneContainer
    fun alpha_whenGone_equalsZero() =
        testScope.runTest {
            mSetFlagsRule.enableFlags(AConfigFlags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
@@ -166,6 +222,7 @@ class AodAlphaViewModelTest : SysuiTestCase() {
        }

    @Test
    @DisableSceneContainer
    fun enterFromTopAlpha() =
        testScope.runTest {
            val alpha by collectLastValue(underTest.alpha)
@@ -181,6 +238,28 @@ class AodAlphaViewModelTest : SysuiTestCase() {
            enterFromTopAnimationAlpha.value = 0.2f
            assertThat(alpha).isEqualTo(0.2f)

            enterFromTopAnimationAlpha.value = 1f
            assertThat(alpha).isEqualTo(1f)
        }

    @Test
    @EnableSceneContainer
    fun enterFromTopAlpha_scene_container() =
        testScope.runTest {
            val alpha by collectLastValue(underTest.alpha)

            kosmos.setSceneTransition(Transition(from = Scenes.Gone, to = Scenes.Lockscreen))
            keyguardTransitionRepository.sendTransitionStep(
                TransitionStep(
                    from = KeyguardState.UNDEFINED,
                    to = KeyguardState.AOD,
                    transitionState = TransitionState.STARTED,
                )
            )

            enterFromTopAnimationAlpha.value = 0.2f
            assertThat(alpha).isEqualTo(0.2f)

            enterFromTopAnimationAlpha.value = 1f
            assertThat(alpha).isEqualTo(1f)
        }
+49 −16
Original line number Diff line number Diff line
@@ -25,6 +25,10 @@ import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInterac
import com.android.systemui.keyguard.shared.model.KeyguardState.AOD
import com.android.systemui.keyguard.shared.model.KeyguardState.DOZING
import com.android.systemui.keyguard.shared.model.KeyguardState.GONE
import com.android.systemui.keyguard.shared.model.KeyguardState.UNDEFINED
import com.android.systemui.scene.domain.interactor.SceneInteractor
import com.android.systemui.scene.shared.flag.SceneContainerFlag
import com.android.systemui.scene.shared.model.Scenes
import javax.inject.Inject
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.Flow
@@ -40,10 +44,38 @@ constructor(
    goneToAodTransitionViewModel: GoneToAodTransitionViewModel,
    goneToDozingTransitionViewModel: GoneToDozingTransitionViewModel,
    keyguardInteractor: KeyguardInteractor,
    sceneInteractor: SceneInteractor,
) {

    /** The alpha level for the entire lockscreen while in AOD. */
    val alpha: Flow<Float> =
        if (SceneContainerFlag.isEnabled) {
            combineTransform(
                keyguardTransitionInteractor.transitions,
                sceneInteractor.transitionState,
                goneToAodTransitionViewModel.enterFromTopAnimationAlpha.onStart { emit(0f) },
                goneToDozingTransitionViewModel.lockscreenAlpha.onStart { emit(0f) },
                keyguardInteractor.keyguardAlpha.onStart { emit(1f) },
            ) { step, sceneTransitionState, goneToAodAlpha, goneToDozingAlpha, keyguardAlpha ->
                if (sceneTransitionState.isIdle(Scenes.Gone)) {
                    emit(0f)
                } else if (
                    step.from == UNDEFINED &&
                        step.to == AOD &&
                        sceneTransitionState.isTransitioning(Scenes.Gone, Scenes.Lockscreen)
                ) {
                    emit(goneToAodAlpha)
                } else if (
                    step.from == UNDEFINED &&
                        step.to == DOZING &&
                        sceneTransitionState.isTransitioning(Scenes.Gone, Scenes.Lockscreen)
                ) {
                    emit(goneToDozingAlpha)
                } else if (!MigrateClocksToBlueprint.isEnabled) {
                    emit(keyguardAlpha)
                }
            }
        } else {
            combineTransform(
                keyguardTransitionInteractor.transitions,
                goneToAodTransitionViewModel.enterFromTopAnimationAlpha.onStart { emit(0f) },
@@ -65,3 +97,4 @@ constructor(
                }
            }
        }
}
+2 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import com.android.systemui.keyguard.domain.interactor.keyguardInteractor
import com.android.systemui.keyguard.domain.interactor.keyguardTransitionInteractor
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.Kosmos.Fixture
import com.android.systemui.scene.domain.interactor.sceneInteractor
import kotlinx.coroutines.ExperimentalCoroutinesApi

val Kosmos.aodAlphaViewModel by Fixture {
@@ -30,5 +31,6 @@ val Kosmos.aodAlphaViewModel by Fixture {
        goneToAodTransitionViewModel = goneToAodTransitionViewModel,
        goneToDozingTransitionViewModel = goneToDozingTransitionViewModel,
        keyguardInteractor = keyguardInteractor,
        sceneInteractor = sceneInteractor,
    )
}