Loading packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/ui/viewmodel/DreamUserActionsViewModelTest.kt +142 −3 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import com.android.compose.animation.scene.UserActionResult import com.android.systemui.SysuiTestCase import com.android.systemui.authentication.data.repository.fakeAuthenticationRepository import com.android.systemui.authentication.shared.model.AuthenticationMethodModel import com.android.systemui.communal.domain.interactor.setCommunalAvailable import com.android.systemui.coroutines.collectLastValue import com.android.systemui.deviceentry.domain.interactor.deviceUnlockedInteractor import com.android.systemui.flags.EnableSceneContainer Loading Loading @@ -72,8 +73,10 @@ class DreamUserActionsViewModelTest : SysuiTestCase() { @Test @DisableFlags(DualShade.FLAG_NAME) fun actions_singleShade() = fun actions_communalNotAvailable_singleShade() = testScope.runTest { kosmos.setCommunalAvailable(false) val actions by collectLastValue(underTest.actions) setUpState( Loading @@ -85,6 +88,8 @@ class DreamUserActionsViewModelTest : SysuiTestCase() { assertThat(actions?.get(Swipe.Up)).isEqualTo(UserActionResult(Scenes.Bouncer)) assertThat(actions?.get(Swipe.Down)) .isEqualTo(UserActionResult(Scenes.Shade, isIrreversible = true)) assertThat(actions?.get(Swipe.Start)).isNull() assertThat(actions?.get(Swipe.End)).isNull() setUpState( isShadeTouchable = false, Loading @@ -102,12 +107,16 @@ class DreamUserActionsViewModelTest : SysuiTestCase() { assertThat(actions?.get(Swipe.Up)).isEqualTo(UserActionResult(Scenes.Gone)) assertThat(actions?.get(Swipe.Down)) .isEqualTo(UserActionResult(Scenes.Shade, isIrreversible = true)) assertThat(actions?.get(Swipe.Start)).isNull() assertThat(actions?.get(Swipe.End)).isNull() } @Test @DisableFlags(DualShade.FLAG_NAME) fun actions_splitShade() = fun actions_communalNotAvailable_splitShade() = testScope.runTest { kosmos.setCommunalAvailable(false) val actions by collectLastValue(underTest.actions) setUpState( Loading @@ -119,6 +128,8 @@ class DreamUserActionsViewModelTest : SysuiTestCase() { assertThat(actions?.get(Swipe.Up)).isEqualTo(UserActionResult(Scenes.Bouncer)) assertThat(actions?.get(Swipe.Down)) .isEqualTo(UserActionResult(Scenes.Shade, ToSplitShade, isIrreversible = true)) assertThat(actions?.get(Swipe.Start)).isNull() assertThat(actions?.get(Swipe.End)).isNull() setUpState( isShadeTouchable = false, Loading @@ -136,12 +147,136 @@ class DreamUserActionsViewModelTest : SysuiTestCase() { assertThat(actions?.get(Swipe.Up)).isEqualTo(UserActionResult(Scenes.Gone)) assertThat(actions?.get(Swipe.Down)) .isEqualTo(UserActionResult(Scenes.Shade, ToSplitShade, isIrreversible = true)) assertThat(actions?.get(Swipe.Start)).isNull() assertThat(actions?.get(Swipe.End)).isNull() } @Test @EnableFlags(DualShade.FLAG_NAME) fun actions_dualShade() = fun actions_communalNotAvailable_dualShade() = testScope.runTest { kosmos.setCommunalAvailable(false) val actions by collectLastValue(underTest.actions) setUpState( isShadeTouchable = true, isDeviceUnlocked = false, shadeMode = ShadeMode.Dual, ) assertThat(actions).isNotEmpty() assertThat(actions?.get(Swipe.Up)).isEqualTo(UserActionResult(Scenes.Bouncer)) assertThat(actions?.get(Swipe.Down)) .isEqualTo( UserActionResult.ShowOverlay(Overlays.NotificationsShade, isIrreversible = true) ) assertThat(actions?.get(Swipe.Start)).isNull() assertThat(actions?.get(Swipe.End)).isNull() setUpState( isShadeTouchable = false, isDeviceUnlocked = false, shadeMode = ShadeMode.Dual, ) assertThat(actions).isEmpty() setUpState(isShadeTouchable = true, isDeviceUnlocked = true, shadeMode = ShadeMode.Dual) assertThat(actions).isNotEmpty() assertThat(actions?.get(Swipe.Up)).isEqualTo(UserActionResult(Scenes.Gone)) assertThat(actions?.get(Swipe.Down)) .isEqualTo( UserActionResult.ShowOverlay(Overlays.NotificationsShade, isIrreversible = true) ) assertThat(actions?.get(Swipe.Start)).isNull() assertThat(actions?.get(Swipe.End)).isNull() } @Test @DisableFlags(DualShade.FLAG_NAME) fun actions_communalAvailable_singleShade() = testScope.runTest { kosmos.setCommunalAvailable(true) val actions by collectLastValue(underTest.actions) setUpState( isShadeTouchable = true, isDeviceUnlocked = false, shadeMode = ShadeMode.Single, ) assertThat(actions).isNotEmpty() assertThat(actions?.get(Swipe.Up)).isEqualTo(UserActionResult(Scenes.Bouncer)) assertThat(actions?.get(Swipe.Down)) .isEqualTo(UserActionResult(Scenes.Shade, isIrreversible = true)) assertThat(actions?.get(Swipe.Start)).isEqualTo(UserActionResult(Scenes.Communal)) assertThat(actions?.get(Swipe.End)).isNull() setUpState( isShadeTouchable = false, isDeviceUnlocked = false, shadeMode = ShadeMode.Single, ) assertThat(actions).isEmpty() setUpState( isShadeTouchable = true, isDeviceUnlocked = true, shadeMode = ShadeMode.Single, ) assertThat(actions).isNotEmpty() assertThat(actions?.get(Swipe.Up)).isEqualTo(UserActionResult(Scenes.Gone)) assertThat(actions?.get(Swipe.Down)) .isEqualTo(UserActionResult(Scenes.Shade, isIrreversible = true)) assertThat(actions?.get(Swipe.Start)).isEqualTo(UserActionResult(Scenes.Communal)) assertThat(actions?.get(Swipe.End)).isNull() } @Test @DisableFlags(DualShade.FLAG_NAME) fun actions_communalAvailable_splitShade() = testScope.runTest { kosmos.setCommunalAvailable(true) val actions by collectLastValue(underTest.actions) setUpState( isShadeTouchable = true, isDeviceUnlocked = false, shadeMode = ShadeMode.Split, ) assertThat(actions).isNotEmpty() assertThat(actions?.get(Swipe.Up)).isEqualTo(UserActionResult(Scenes.Bouncer)) assertThat(actions?.get(Swipe.Down)) .isEqualTo(UserActionResult(Scenes.Shade, ToSplitShade, isIrreversible = true)) assertThat(actions?.get(Swipe.Start)).isEqualTo(UserActionResult(Scenes.Communal)) assertThat(actions?.get(Swipe.End)).isNull() setUpState( isShadeTouchable = false, isDeviceUnlocked = false, shadeMode = ShadeMode.Split, ) assertThat(actions).isEmpty() setUpState( isShadeTouchable = true, isDeviceUnlocked = true, shadeMode = ShadeMode.Split, ) assertThat(actions).isNotEmpty() assertThat(actions?.get(Swipe.Up)).isEqualTo(UserActionResult(Scenes.Gone)) assertThat(actions?.get(Swipe.Down)) .isEqualTo(UserActionResult(Scenes.Shade, ToSplitShade, isIrreversible = true)) assertThat(actions?.get(Swipe.Start)).isEqualTo(UserActionResult(Scenes.Communal)) assertThat(actions?.get(Swipe.End)).isNull() } @Test @EnableFlags(DualShade.FLAG_NAME) fun actions_communalAvailable_dualShade() = testScope.runTest { kosmos.setCommunalAvailable(true) val actions by collectLastValue(underTest.actions) setUpState( Loading @@ -155,6 +290,8 @@ class DreamUserActionsViewModelTest : SysuiTestCase() { .isEqualTo( UserActionResult.ShowOverlay(Overlays.NotificationsShade, isIrreversible = true) ) assertThat(actions?.get(Swipe.Start)).isEqualTo(UserActionResult(Scenes.Communal)) assertThat(actions?.get(Swipe.End)).isNull() setUpState( isShadeTouchable = false, Loading @@ -170,6 +307,8 @@ class DreamUserActionsViewModelTest : SysuiTestCase() { .isEqualTo( UserActionResult.ShowOverlay(Overlays.NotificationsShade, isIrreversible = true) ) assertThat(actions?.get(Swipe.Start)).isEqualTo(UserActionResult(Scenes.Communal)) assertThat(actions?.get(Swipe.End)).isNull() } private fun TestScope.setUpState( Loading packages/SystemUI/src/com/android/systemui/dreams/ui/viewmodel/DreamUserActionsViewModel.kt +7 −2 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.systemui.dreams.ui.viewmodel import com.android.compose.animation.scene.Swipe import com.android.compose.animation.scene.UserAction import com.android.compose.animation.scene.UserActionResult import com.android.systemui.communal.domain.interactor.CommunalInteractor import com.android.systemui.deviceentry.domain.interactor.DeviceUnlockedInteractor import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.scene.ui.viewmodel.UserActionsViewModel Loading @@ -38,6 +39,7 @@ import kotlinx.coroutines.flow.map class DreamUserActionsViewModel @AssistedInject constructor( private val communalInteractor: CommunalInteractor, private val deviceUnlockedInteractor: DeviceUnlockedInteractor, private val shadeInteractor: ShadeInteractor, ) : UserActionsViewModel() { Loading @@ -50,10 +52,13 @@ constructor( } else { combine( deviceUnlockedInteractor.deviceUnlockStatus.map { it.isUnlocked }, communalInteractor.isCommunalAvailable, shadeInteractor.shadeMode, ) { isDeviceUnlocked, shadeMode -> ) { isDeviceUnlocked, isCommunalAvailable, shadeMode -> buildList { if (isCommunalAvailable) { add(Swipe.Start to Scenes.Communal) } val bouncerOrGone = if (isDeviceUnlocked) Scenes.Gone else Scenes.Bouncer Loading packages/SystemUI/tests/utils/src/com/android/systemui/dreams/ui/viewmodel/DreamUserActionsViewModelKosmos.kt +2 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.systemui.dreams.ui.viewmodel import com.android.systemui.communal.domain.interactor.communalInteractor import com.android.systemui.deviceentry.domain.interactor.deviceUnlockedInteractor import com.android.systemui.kosmos.Kosmos import com.android.systemui.shade.domain.interactor.shadeInteractor Loading @@ -23,6 +24,7 @@ import com.android.systemui.shade.domain.interactor.shadeInteractor val Kosmos.dreamUserActionsViewModel by Kosmos.Fixture { DreamUserActionsViewModel( communalInteractor = communalInteractor, deviceUnlockedInteractor = deviceUnlockedInteractor, shadeInteractor = shadeInteractor, ) Loading Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/ui/viewmodel/DreamUserActionsViewModelTest.kt +142 −3 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import com.android.compose.animation.scene.UserActionResult import com.android.systemui.SysuiTestCase import com.android.systemui.authentication.data.repository.fakeAuthenticationRepository import com.android.systemui.authentication.shared.model.AuthenticationMethodModel import com.android.systemui.communal.domain.interactor.setCommunalAvailable import com.android.systemui.coroutines.collectLastValue import com.android.systemui.deviceentry.domain.interactor.deviceUnlockedInteractor import com.android.systemui.flags.EnableSceneContainer Loading Loading @@ -72,8 +73,10 @@ class DreamUserActionsViewModelTest : SysuiTestCase() { @Test @DisableFlags(DualShade.FLAG_NAME) fun actions_singleShade() = fun actions_communalNotAvailable_singleShade() = testScope.runTest { kosmos.setCommunalAvailable(false) val actions by collectLastValue(underTest.actions) setUpState( Loading @@ -85,6 +88,8 @@ class DreamUserActionsViewModelTest : SysuiTestCase() { assertThat(actions?.get(Swipe.Up)).isEqualTo(UserActionResult(Scenes.Bouncer)) assertThat(actions?.get(Swipe.Down)) .isEqualTo(UserActionResult(Scenes.Shade, isIrreversible = true)) assertThat(actions?.get(Swipe.Start)).isNull() assertThat(actions?.get(Swipe.End)).isNull() setUpState( isShadeTouchable = false, Loading @@ -102,12 +107,16 @@ class DreamUserActionsViewModelTest : SysuiTestCase() { assertThat(actions?.get(Swipe.Up)).isEqualTo(UserActionResult(Scenes.Gone)) assertThat(actions?.get(Swipe.Down)) .isEqualTo(UserActionResult(Scenes.Shade, isIrreversible = true)) assertThat(actions?.get(Swipe.Start)).isNull() assertThat(actions?.get(Swipe.End)).isNull() } @Test @DisableFlags(DualShade.FLAG_NAME) fun actions_splitShade() = fun actions_communalNotAvailable_splitShade() = testScope.runTest { kosmos.setCommunalAvailable(false) val actions by collectLastValue(underTest.actions) setUpState( Loading @@ -119,6 +128,8 @@ class DreamUserActionsViewModelTest : SysuiTestCase() { assertThat(actions?.get(Swipe.Up)).isEqualTo(UserActionResult(Scenes.Bouncer)) assertThat(actions?.get(Swipe.Down)) .isEqualTo(UserActionResult(Scenes.Shade, ToSplitShade, isIrreversible = true)) assertThat(actions?.get(Swipe.Start)).isNull() assertThat(actions?.get(Swipe.End)).isNull() setUpState( isShadeTouchable = false, Loading @@ -136,12 +147,136 @@ class DreamUserActionsViewModelTest : SysuiTestCase() { assertThat(actions?.get(Swipe.Up)).isEqualTo(UserActionResult(Scenes.Gone)) assertThat(actions?.get(Swipe.Down)) .isEqualTo(UserActionResult(Scenes.Shade, ToSplitShade, isIrreversible = true)) assertThat(actions?.get(Swipe.Start)).isNull() assertThat(actions?.get(Swipe.End)).isNull() } @Test @EnableFlags(DualShade.FLAG_NAME) fun actions_dualShade() = fun actions_communalNotAvailable_dualShade() = testScope.runTest { kosmos.setCommunalAvailable(false) val actions by collectLastValue(underTest.actions) setUpState( isShadeTouchable = true, isDeviceUnlocked = false, shadeMode = ShadeMode.Dual, ) assertThat(actions).isNotEmpty() assertThat(actions?.get(Swipe.Up)).isEqualTo(UserActionResult(Scenes.Bouncer)) assertThat(actions?.get(Swipe.Down)) .isEqualTo( UserActionResult.ShowOverlay(Overlays.NotificationsShade, isIrreversible = true) ) assertThat(actions?.get(Swipe.Start)).isNull() assertThat(actions?.get(Swipe.End)).isNull() setUpState( isShadeTouchable = false, isDeviceUnlocked = false, shadeMode = ShadeMode.Dual, ) assertThat(actions).isEmpty() setUpState(isShadeTouchable = true, isDeviceUnlocked = true, shadeMode = ShadeMode.Dual) assertThat(actions).isNotEmpty() assertThat(actions?.get(Swipe.Up)).isEqualTo(UserActionResult(Scenes.Gone)) assertThat(actions?.get(Swipe.Down)) .isEqualTo( UserActionResult.ShowOverlay(Overlays.NotificationsShade, isIrreversible = true) ) assertThat(actions?.get(Swipe.Start)).isNull() assertThat(actions?.get(Swipe.End)).isNull() } @Test @DisableFlags(DualShade.FLAG_NAME) fun actions_communalAvailable_singleShade() = testScope.runTest { kosmos.setCommunalAvailable(true) val actions by collectLastValue(underTest.actions) setUpState( isShadeTouchable = true, isDeviceUnlocked = false, shadeMode = ShadeMode.Single, ) assertThat(actions).isNotEmpty() assertThat(actions?.get(Swipe.Up)).isEqualTo(UserActionResult(Scenes.Bouncer)) assertThat(actions?.get(Swipe.Down)) .isEqualTo(UserActionResult(Scenes.Shade, isIrreversible = true)) assertThat(actions?.get(Swipe.Start)).isEqualTo(UserActionResult(Scenes.Communal)) assertThat(actions?.get(Swipe.End)).isNull() setUpState( isShadeTouchable = false, isDeviceUnlocked = false, shadeMode = ShadeMode.Single, ) assertThat(actions).isEmpty() setUpState( isShadeTouchable = true, isDeviceUnlocked = true, shadeMode = ShadeMode.Single, ) assertThat(actions).isNotEmpty() assertThat(actions?.get(Swipe.Up)).isEqualTo(UserActionResult(Scenes.Gone)) assertThat(actions?.get(Swipe.Down)) .isEqualTo(UserActionResult(Scenes.Shade, isIrreversible = true)) assertThat(actions?.get(Swipe.Start)).isEqualTo(UserActionResult(Scenes.Communal)) assertThat(actions?.get(Swipe.End)).isNull() } @Test @DisableFlags(DualShade.FLAG_NAME) fun actions_communalAvailable_splitShade() = testScope.runTest { kosmos.setCommunalAvailable(true) val actions by collectLastValue(underTest.actions) setUpState( isShadeTouchable = true, isDeviceUnlocked = false, shadeMode = ShadeMode.Split, ) assertThat(actions).isNotEmpty() assertThat(actions?.get(Swipe.Up)).isEqualTo(UserActionResult(Scenes.Bouncer)) assertThat(actions?.get(Swipe.Down)) .isEqualTo(UserActionResult(Scenes.Shade, ToSplitShade, isIrreversible = true)) assertThat(actions?.get(Swipe.Start)).isEqualTo(UserActionResult(Scenes.Communal)) assertThat(actions?.get(Swipe.End)).isNull() setUpState( isShadeTouchable = false, isDeviceUnlocked = false, shadeMode = ShadeMode.Split, ) assertThat(actions).isEmpty() setUpState( isShadeTouchable = true, isDeviceUnlocked = true, shadeMode = ShadeMode.Split, ) assertThat(actions).isNotEmpty() assertThat(actions?.get(Swipe.Up)).isEqualTo(UserActionResult(Scenes.Gone)) assertThat(actions?.get(Swipe.Down)) .isEqualTo(UserActionResult(Scenes.Shade, ToSplitShade, isIrreversible = true)) assertThat(actions?.get(Swipe.Start)).isEqualTo(UserActionResult(Scenes.Communal)) assertThat(actions?.get(Swipe.End)).isNull() } @Test @EnableFlags(DualShade.FLAG_NAME) fun actions_communalAvailable_dualShade() = testScope.runTest { kosmos.setCommunalAvailable(true) val actions by collectLastValue(underTest.actions) setUpState( Loading @@ -155,6 +290,8 @@ class DreamUserActionsViewModelTest : SysuiTestCase() { .isEqualTo( UserActionResult.ShowOverlay(Overlays.NotificationsShade, isIrreversible = true) ) assertThat(actions?.get(Swipe.Start)).isEqualTo(UserActionResult(Scenes.Communal)) assertThat(actions?.get(Swipe.End)).isNull() setUpState( isShadeTouchable = false, Loading @@ -170,6 +307,8 @@ class DreamUserActionsViewModelTest : SysuiTestCase() { .isEqualTo( UserActionResult.ShowOverlay(Overlays.NotificationsShade, isIrreversible = true) ) assertThat(actions?.get(Swipe.Start)).isEqualTo(UserActionResult(Scenes.Communal)) assertThat(actions?.get(Swipe.End)).isNull() } private fun TestScope.setUpState( Loading
packages/SystemUI/src/com/android/systemui/dreams/ui/viewmodel/DreamUserActionsViewModel.kt +7 −2 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.systemui.dreams.ui.viewmodel import com.android.compose.animation.scene.Swipe import com.android.compose.animation.scene.UserAction import com.android.compose.animation.scene.UserActionResult import com.android.systemui.communal.domain.interactor.CommunalInteractor import com.android.systemui.deviceentry.domain.interactor.DeviceUnlockedInteractor import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.scene.ui.viewmodel.UserActionsViewModel Loading @@ -38,6 +39,7 @@ import kotlinx.coroutines.flow.map class DreamUserActionsViewModel @AssistedInject constructor( private val communalInteractor: CommunalInteractor, private val deviceUnlockedInteractor: DeviceUnlockedInteractor, private val shadeInteractor: ShadeInteractor, ) : UserActionsViewModel() { Loading @@ -50,10 +52,13 @@ constructor( } else { combine( deviceUnlockedInteractor.deviceUnlockStatus.map { it.isUnlocked }, communalInteractor.isCommunalAvailable, shadeInteractor.shadeMode, ) { isDeviceUnlocked, shadeMode -> ) { isDeviceUnlocked, isCommunalAvailable, shadeMode -> buildList { if (isCommunalAvailable) { add(Swipe.Start to Scenes.Communal) } val bouncerOrGone = if (isDeviceUnlocked) Scenes.Gone else Scenes.Bouncer Loading
packages/SystemUI/tests/utils/src/com/android/systemui/dreams/ui/viewmodel/DreamUserActionsViewModelKosmos.kt +2 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.systemui.dreams.ui.viewmodel import com.android.systemui.communal.domain.interactor.communalInteractor import com.android.systemui.deviceentry.domain.interactor.deviceUnlockedInteractor import com.android.systemui.kosmos.Kosmos import com.android.systemui.shade.domain.interactor.shadeInteractor Loading @@ -23,6 +24,7 @@ import com.android.systemui.shade.domain.interactor.shadeInteractor val Kosmos.dreamUserActionsViewModel by Kosmos.Fixture { DreamUserActionsViewModel( communalInteractor = communalInteractor, deviceUnlockedInteractor = deviceUnlockedInteractor, shadeInteractor = shadeInteractor, ) Loading