diff options
| author | 2024-11-21 21:12:46 +0000 | |
|---|---|---|
| committer | 2024-11-21 21:12:46 +0000 | |
| commit | d1c99778b7b31affa6e0b0655c59e8aa8743251d (patch) | |
| tree | fd7f91b1efc2436fbea1ffd7ae6ed72cade4344f | |
| parent | 8a64ce3ae77db1fd6fbc69bbcc1f5de2eff3903f (diff) | |
| parent | 8d5cac62d66cbf3feb8b90f63bd43bcab1d7829d (diff) | |
Merge "Fix dream -> communal when communal is not available" into main
3 files changed, 151 insertions, 5 deletions
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/ui/viewmodel/DreamUserActionsViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/ui/viewmodel/DreamUserActionsViewModelTest.kt index 82bcecef1f70..55b87db232e8 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/ui/viewmodel/DreamUserActionsViewModelTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/ui/viewmodel/DreamUserActionsViewModelTest.kt @@ -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 @@ -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( @@ -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, @@ -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( @@ -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, @@ -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( @@ -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, @@ -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( diff --git a/packages/SystemUI/src/com/android/systemui/dreams/ui/viewmodel/DreamUserActionsViewModel.kt b/packages/SystemUI/src/com/android/systemui/dreams/ui/viewmodel/DreamUserActionsViewModel.kt index b37206a4fef7..160574fa2244 100644 --- a/packages/SystemUI/src/com/android/systemui/dreams/ui/viewmodel/DreamUserActionsViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/dreams/ui/viewmodel/DreamUserActionsViewModel.kt @@ -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 @@ -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() { @@ -50,10 +52,13 @@ constructor( } else { combine( deviceUnlockedInteractor.deviceUnlockStatus.map { it.isUnlocked }, + communalInteractor.isCommunalAvailable, shadeInteractor.shadeMode, - ) { isDeviceUnlocked, shadeMode -> + ) { isDeviceUnlocked, isCommunalAvailable, shadeMode -> buildList { - add(Swipe.Start to Scenes.Communal) + if (isCommunalAvailable) { + add(Swipe.Start to Scenes.Communal) + } val bouncerOrGone = if (isDeviceUnlocked) Scenes.Gone else Scenes.Bouncer diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/dreams/ui/viewmodel/DreamUserActionsViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/dreams/ui/viewmodel/DreamUserActionsViewModelKosmos.kt index b24b3ad05117..71746b505a48 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/dreams/ui/viewmodel/DreamUserActionsViewModelKosmos.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/dreams/ui/viewmodel/DreamUserActionsViewModelKosmos.kt @@ -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 @@ -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, ) |