Loading packages/SystemUI/multivalentTests/src/com/android/systemui/scene/SceneFrameworkIntegrationTest.kt +4 −10 Original line number Diff line number Diff line Loading @@ -50,9 +50,7 @@ import com.android.systemui.power.domain.interactor.PowerInteractor.Companion.se import com.android.systemui.power.domain.interactor.PowerInteractor.Companion.setAwakeForTest import com.android.systemui.power.domain.interactor.powerInteractor import com.android.systemui.scene.domain.interactor.sceneInteractor import com.android.systemui.scene.domain.resolver.homeSceneFamilyResolver import com.android.systemui.scene.domain.startable.sceneContainerStartable import com.android.systemui.scene.shared.model.SceneFamilies import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.scene.shared.model.fakeSceneDataSource import com.android.systemui.scene.ui.viewmodel.SceneContainerViewModel Loading Loading @@ -185,7 +183,6 @@ class SceneFrameworkIntegrationTest : SysuiTestCase() { fun swipeUpOnShadeScene_withAuthMethodSwipe_lockscreenNotDismissed_goesToLockscreen() = testScope.runTest { val actions by collectLastValue(kosmos.shadeUserActionsViewModel.actions) val homeScene by collectLastValue(kosmos.homeSceneFamilyResolver.resolvedScene) kosmos.setAuthMethod(AuthenticationMethodModel.None, enableLockscreen = true) kosmos.assertCurrentScene(Scenes.Lockscreen) Loading @@ -195,9 +192,8 @@ class SceneFrameworkIntegrationTest : SysuiTestCase() { val upDestinationSceneKey = (actions?.get(Swipe.Up) as? UserActionResult.ChangeScene)?.toScene assertThat(upDestinationSceneKey).isEqualTo(SceneFamilies.Home) assertThat(homeScene).isEqualTo(Scenes.Lockscreen) kosmos.emulateUserDrivenTransition(to = homeScene) assertThat(upDestinationSceneKey).isEqualTo(Scenes.Lockscreen) kosmos.emulateUserDrivenTransition(to = Scenes.Lockscreen) } @Test Loading @@ -205,7 +201,6 @@ class SceneFrameworkIntegrationTest : SysuiTestCase() { testScope.runTest { val actions by collectLastValue(kosmos.shadeUserActionsViewModel.actions) val canSwipeToEnter by collectLastValue(kosmos.deviceEntryInteractor.canSwipeToEnter) val homeScene by collectLastValue(kosmos.homeSceneFamilyResolver.resolvedScene) kosmos.setAuthMethod(AuthenticationMethodModel.None, enableLockscreen = true) Loading @@ -222,9 +217,8 @@ class SceneFrameworkIntegrationTest : SysuiTestCase() { val upDestinationSceneKey = (actions?.get(Swipe.Up) as? UserActionResult.ChangeScene)?.toScene assertThat(upDestinationSceneKey).isEqualTo(SceneFamilies.Home) assertThat(homeScene).isEqualTo(Scenes.Gone) kosmos.emulateUserDrivenTransition(to = homeScene) assertThat(upDestinationSceneKey).isEqualTo(Scenes.Gone) kosmos.emulateUserDrivenTransition(to = Scenes.Gone) } @Test Loading packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/ShadeUserActionsViewModelTest.kt +16 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ import com.android.systemui.qs.ui.adapter.fakeQSSceneAdapter import com.android.systemui.res.R import com.android.systemui.scene.domain.interactor.sceneInteractor import com.android.systemui.scene.domain.resolver.homeSceneFamilyResolver import com.android.systemui.scene.domain.startable.sceneContainerStartable import com.android.systemui.scene.shared.model.SceneFamilies import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.scene.shared.model.TransitionKeys.ToSplitShade Loading Loading @@ -76,6 +77,7 @@ class ShadeUserActionsViewModelTest : SysuiTestCase() { @Before fun setUp() { kosmos.sceneContainerStartable.start() underTest.activateIn(testScope) } Loading Loading @@ -232,6 +234,20 @@ class ShadeUserActionsViewModelTest : SysuiTestCase() { .isEmpty() } @Test fun upTransitionSceneKey_backToCommunal() = testScope.runTest { val actions by collectLastValue(underTest.actions) val currentScene by collectLastValue(kosmos.sceneInteractor.currentScene) assertThat(currentScene).isEqualTo(Scenes.Lockscreen) kosmos.sceneInteractor.changeScene(Scenes.Communal, "") assertThat(currentScene).isEqualTo(Scenes.Communal) kosmos.sceneInteractor.changeScene(Scenes.Shade, "") assertThat(currentScene).isEqualTo(Scenes.Shade) assertThat(actions?.get(Swipe.Up)).isEqualTo(UserActionResult(Scenes.Communal)) } private fun TestScope.setDeviceEntered(isEntered: Boolean) { if (isEntered) { // Unlock the device marking the device has entered. Loading packages/SystemUI/src/com/android/systemui/shade/ui/viewmodel/ShadeUserActionsViewModel.kt +8 −4 Original line number Diff line number Diff line Loading @@ -16,11 +16,13 @@ package com.android.systemui.shade.ui.viewmodel import com.android.app.tracing.coroutines.flow.map import com.android.compose.animation.scene.Swipe import com.android.compose.animation.scene.SwipeDirection import com.android.compose.animation.scene.UserAction import com.android.compose.animation.scene.UserActionResult import com.android.systemui.qs.ui.adapter.QSSceneAdapter import com.android.systemui.scene.domain.interactor.SceneBackInteractor import com.android.systemui.scene.shared.model.SceneFamilies import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.scene.shared.model.TransitionKeys.ToSplitShade Loading @@ -41,21 +43,23 @@ class ShadeUserActionsViewModel constructor( private val qsSceneAdapter: QSSceneAdapter, private val shadeInteractor: ShadeInteractor, private val sceneBackInteractor: SceneBackInteractor, ) : UserActionsViewModel() { override suspend fun hydrateActions(setActions: (Map<UserAction, UserActionResult>) -> Unit) { combine( shadeInteractor.shadeMode, qsSceneAdapter.isCustomizerShowing, ) { shadeMode, isCustomizerShowing -> sceneBackInteractor.backScene.map { it ?: SceneFamilies.Home }, ) { shadeMode, isCustomizerShowing, backScene -> buildMap<UserAction, UserActionResult> { if (!isCustomizerShowing) { set( Swipe(SwipeDirection.Up), UserActionResult( SceneFamilies.Home, ToSplitShade.takeIf { shadeMode is ShadeMode.Split } ) backScene, ToSplitShade.takeIf { shadeMode is ShadeMode.Split }, ), ) } Loading packages/SystemUI/tests/utils/src/com/android/systemui/shade/ui/viewmodel/ShadeUserActionsViewModelKosmos.kt +2 −0 Original line number Diff line number Diff line Loading @@ -19,11 +19,13 @@ package com.android.systemui.shade.ui.viewmodel import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.Kosmos.Fixture import com.android.systemui.qs.ui.adapter.qsSceneAdapter import com.android.systemui.scene.domain.interactor.sceneBackInteractor import com.android.systemui.shade.domain.interactor.shadeInteractor val Kosmos.shadeUserActionsViewModel: ShadeUserActionsViewModel by Fixture { ShadeUserActionsViewModel( qsSceneAdapter = qsSceneAdapter, shadeInteractor = shadeInteractor, sceneBackInteractor = sceneBackInteractor, ) } Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/scene/SceneFrameworkIntegrationTest.kt +4 −10 Original line number Diff line number Diff line Loading @@ -50,9 +50,7 @@ import com.android.systemui.power.domain.interactor.PowerInteractor.Companion.se import com.android.systemui.power.domain.interactor.PowerInteractor.Companion.setAwakeForTest import com.android.systemui.power.domain.interactor.powerInteractor import com.android.systemui.scene.domain.interactor.sceneInteractor import com.android.systemui.scene.domain.resolver.homeSceneFamilyResolver import com.android.systemui.scene.domain.startable.sceneContainerStartable import com.android.systemui.scene.shared.model.SceneFamilies import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.scene.shared.model.fakeSceneDataSource import com.android.systemui.scene.ui.viewmodel.SceneContainerViewModel Loading Loading @@ -185,7 +183,6 @@ class SceneFrameworkIntegrationTest : SysuiTestCase() { fun swipeUpOnShadeScene_withAuthMethodSwipe_lockscreenNotDismissed_goesToLockscreen() = testScope.runTest { val actions by collectLastValue(kosmos.shadeUserActionsViewModel.actions) val homeScene by collectLastValue(kosmos.homeSceneFamilyResolver.resolvedScene) kosmos.setAuthMethod(AuthenticationMethodModel.None, enableLockscreen = true) kosmos.assertCurrentScene(Scenes.Lockscreen) Loading @@ -195,9 +192,8 @@ class SceneFrameworkIntegrationTest : SysuiTestCase() { val upDestinationSceneKey = (actions?.get(Swipe.Up) as? UserActionResult.ChangeScene)?.toScene assertThat(upDestinationSceneKey).isEqualTo(SceneFamilies.Home) assertThat(homeScene).isEqualTo(Scenes.Lockscreen) kosmos.emulateUserDrivenTransition(to = homeScene) assertThat(upDestinationSceneKey).isEqualTo(Scenes.Lockscreen) kosmos.emulateUserDrivenTransition(to = Scenes.Lockscreen) } @Test Loading @@ -205,7 +201,6 @@ class SceneFrameworkIntegrationTest : SysuiTestCase() { testScope.runTest { val actions by collectLastValue(kosmos.shadeUserActionsViewModel.actions) val canSwipeToEnter by collectLastValue(kosmos.deviceEntryInteractor.canSwipeToEnter) val homeScene by collectLastValue(kosmos.homeSceneFamilyResolver.resolvedScene) kosmos.setAuthMethod(AuthenticationMethodModel.None, enableLockscreen = true) Loading @@ -222,9 +217,8 @@ class SceneFrameworkIntegrationTest : SysuiTestCase() { val upDestinationSceneKey = (actions?.get(Swipe.Up) as? UserActionResult.ChangeScene)?.toScene assertThat(upDestinationSceneKey).isEqualTo(SceneFamilies.Home) assertThat(homeScene).isEqualTo(Scenes.Gone) kosmos.emulateUserDrivenTransition(to = homeScene) assertThat(upDestinationSceneKey).isEqualTo(Scenes.Gone) kosmos.emulateUserDrivenTransition(to = Scenes.Gone) } @Test Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/ShadeUserActionsViewModelTest.kt +16 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ import com.android.systemui.qs.ui.adapter.fakeQSSceneAdapter import com.android.systemui.res.R import com.android.systemui.scene.domain.interactor.sceneInteractor import com.android.systemui.scene.domain.resolver.homeSceneFamilyResolver import com.android.systemui.scene.domain.startable.sceneContainerStartable import com.android.systemui.scene.shared.model.SceneFamilies import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.scene.shared.model.TransitionKeys.ToSplitShade Loading Loading @@ -76,6 +77,7 @@ class ShadeUserActionsViewModelTest : SysuiTestCase() { @Before fun setUp() { kosmos.sceneContainerStartable.start() underTest.activateIn(testScope) } Loading Loading @@ -232,6 +234,20 @@ class ShadeUserActionsViewModelTest : SysuiTestCase() { .isEmpty() } @Test fun upTransitionSceneKey_backToCommunal() = testScope.runTest { val actions by collectLastValue(underTest.actions) val currentScene by collectLastValue(kosmos.sceneInteractor.currentScene) assertThat(currentScene).isEqualTo(Scenes.Lockscreen) kosmos.sceneInteractor.changeScene(Scenes.Communal, "") assertThat(currentScene).isEqualTo(Scenes.Communal) kosmos.sceneInteractor.changeScene(Scenes.Shade, "") assertThat(currentScene).isEqualTo(Scenes.Shade) assertThat(actions?.get(Swipe.Up)).isEqualTo(UserActionResult(Scenes.Communal)) } private fun TestScope.setDeviceEntered(isEntered: Boolean) { if (isEntered) { // Unlock the device marking the device has entered. Loading
packages/SystemUI/src/com/android/systemui/shade/ui/viewmodel/ShadeUserActionsViewModel.kt +8 −4 Original line number Diff line number Diff line Loading @@ -16,11 +16,13 @@ package com.android.systemui.shade.ui.viewmodel import com.android.app.tracing.coroutines.flow.map import com.android.compose.animation.scene.Swipe import com.android.compose.animation.scene.SwipeDirection import com.android.compose.animation.scene.UserAction import com.android.compose.animation.scene.UserActionResult import com.android.systemui.qs.ui.adapter.QSSceneAdapter import com.android.systemui.scene.domain.interactor.SceneBackInteractor import com.android.systemui.scene.shared.model.SceneFamilies import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.scene.shared.model.TransitionKeys.ToSplitShade Loading @@ -41,21 +43,23 @@ class ShadeUserActionsViewModel constructor( private val qsSceneAdapter: QSSceneAdapter, private val shadeInteractor: ShadeInteractor, private val sceneBackInteractor: SceneBackInteractor, ) : UserActionsViewModel() { override suspend fun hydrateActions(setActions: (Map<UserAction, UserActionResult>) -> Unit) { combine( shadeInteractor.shadeMode, qsSceneAdapter.isCustomizerShowing, ) { shadeMode, isCustomizerShowing -> sceneBackInteractor.backScene.map { it ?: SceneFamilies.Home }, ) { shadeMode, isCustomizerShowing, backScene -> buildMap<UserAction, UserActionResult> { if (!isCustomizerShowing) { set( Swipe(SwipeDirection.Up), UserActionResult( SceneFamilies.Home, ToSplitShade.takeIf { shadeMode is ShadeMode.Split } ) backScene, ToSplitShade.takeIf { shadeMode is ShadeMode.Split }, ), ) } Loading
packages/SystemUI/tests/utils/src/com/android/systemui/shade/ui/viewmodel/ShadeUserActionsViewModelKosmos.kt +2 −0 Original line number Diff line number Diff line Loading @@ -19,11 +19,13 @@ package com.android.systemui.shade.ui.viewmodel import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.Kosmos.Fixture import com.android.systemui.qs.ui.adapter.qsSceneAdapter import com.android.systemui.scene.domain.interactor.sceneBackInteractor import com.android.systemui.shade.domain.interactor.shadeInteractor val Kosmos.shadeUserActionsViewModel: ShadeUserActionsViewModel by Fixture { ShadeUserActionsViewModel( qsSceneAdapter = qsSceneAdapter, shadeInteractor = shadeInteractor, sceneBackInteractor = sceneBackInteractor, ) }