Loading packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodAlphaViewModelTest.kt +79 −0 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -67,6 +73,7 @@ class AodAlphaViewModelTest : SysuiTestCase() { } @Test @DisableSceneContainer fun alpha_WhenNotGone_clockMigrationFlagIsOff_emitsKeyguardAlpha() = testScope.runTest { mSetFlagsRule.disableFlags(AConfigFlags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT) Loading @@ -86,6 +93,7 @@ class AodAlphaViewModelTest : SysuiTestCase() { } @Test @DisableSceneContainer fun alpha_WhenGoneToAod() = testScope.runTest { val alpha by collectLastValue(underTest.alpha) Loading @@ -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) Loading @@ -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) Loading Loading @@ -166,6 +222,7 @@ class AodAlphaViewModelTest : SysuiTestCase() { } @Test @DisableSceneContainer fun enterFromTopAlpha() = testScope.runTest { val alpha by collectLastValue(underTest.alpha) Loading @@ -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) } Loading packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AodAlphaViewModel.kt +49 −16 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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) }, Loading @@ -65,3 +97,4 @@ constructor( } } } } packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/AodAlphaViewModelKosmos.kt +2 −0 Original line number Diff line number Diff line Loading @@ -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 { Loading @@ -30,5 +31,6 @@ val Kosmos.aodAlphaViewModel by Fixture { goneToAodTransitionViewModel = goneToAodTransitionViewModel, goneToDozingTransitionViewModel = goneToDozingTransitionViewModel, keyguardInteractor = keyguardInteractor, sceneInteractor = sceneInteractor, ) } Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodAlphaViewModelTest.kt +79 −0 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -67,6 +73,7 @@ class AodAlphaViewModelTest : SysuiTestCase() { } @Test @DisableSceneContainer fun alpha_WhenNotGone_clockMigrationFlagIsOff_emitsKeyguardAlpha() = testScope.runTest { mSetFlagsRule.disableFlags(AConfigFlags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT) Loading @@ -86,6 +93,7 @@ class AodAlphaViewModelTest : SysuiTestCase() { } @Test @DisableSceneContainer fun alpha_WhenGoneToAod() = testScope.runTest { val alpha by collectLastValue(underTest.alpha) Loading @@ -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) Loading @@ -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) Loading Loading @@ -166,6 +222,7 @@ class AodAlphaViewModelTest : SysuiTestCase() { } @Test @DisableSceneContainer fun enterFromTopAlpha() = testScope.runTest { val alpha by collectLastValue(underTest.alpha) Loading @@ -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) } Loading
packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AodAlphaViewModel.kt +49 −16 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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) }, Loading @@ -65,3 +97,4 @@ constructor( } } } }
packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/AodAlphaViewModelKosmos.kt +2 −0 Original line number Diff line number Diff line Loading @@ -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 { Loading @@ -30,5 +31,6 @@ val Kosmos.aodAlphaViewModel by Fixture { goneToAodTransitionViewModel = goneToAodTransitionViewModel, goneToDozingTransitionViewModel = goneToDozingTransitionViewModel, keyguardInteractor = keyguardInteractor, sceneInteractor = sceneInteractor, ) }