Loading packages/SystemUI/multivalentTests/src/com/android/systemui/scene/ui/viewmodel/GoneUserActionsViewModelTest.kt +42 −0 Original line number Diff line number Diff line Loading @@ -21,13 +21,17 @@ import android.platform.test.annotations.EnableFlags import android.testing.TestableLooper import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.compose.animation.scene.Edge 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.SysuiTestCase import com.android.systemui.coroutines.collectLastValue import com.android.systemui.flags.EnableSceneContainer import com.android.systemui.kosmos.testScope import com.android.systemui.lifecycle.activateIn import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.scene.shared.model.TransitionKeys.ToSplitShade import com.android.systemui.shade.data.repository.shadeRepository import com.android.systemui.shade.domain.interactor.shadeInteractor Loading Loading @@ -92,4 +96,42 @@ class GoneUserActionsViewModelTest : SysuiTestCase() { assertThat(userActions?.get(Swipe(SwipeDirection.Down))?.transitionKey).isNull() } @Test @DisableFlags(DualShade.FLAG_NAME) fun swipeDownWithTwoFingers_singleShade_goesToQuickSettings() = testScope.runTest { val userActions by collectLastValue(underTest.actions) shadeRepository.setShadeLayoutWide(false) runCurrent() assertThat(userActions?.get(swipeDownFromTopWithTwoFingers())) .isEqualTo(UserActionResult(Scenes.QuickSettings)) } @Test @DisableFlags(DualShade.FLAG_NAME) fun swipeDownWithTwoFingers_splitShade_goesToShade() = testScope.runTest { val userActions by collectLastValue(underTest.actions) shadeRepository.setShadeLayoutWide(true) runCurrent() assertThat(userActions?.get(swipeDownFromTopWithTwoFingers())) .isEqualTo(UserActionResult(Scenes.Shade, ToSplitShade)) } @Test @EnableFlags(DualShade.FLAG_NAME) fun swipeDownWithTwoFingers_dualShadeEnabled_isNull() = testScope.runTest { val userActions by collectLastValue(underTest.actions) runCurrent() assertThat(userActions?.get(swipeDownFromTopWithTwoFingers())).isNull() } private fun swipeDownFromTopWithTwoFingers(): UserAction { return Swipe(direction = SwipeDirection.Down, pointerCount = 2, fromSource = Edge.Top) } } packages/SystemUI/src/com/android/systemui/scene/ui/viewmodel/GoneUserActionsViewModel.kt +16 −9 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ package com.android.systemui.scene.ui.viewmodel import com.android.compose.animation.scene.Edge import com.android.compose.animation.scene.Swipe import com.android.compose.animation.scene.SwipeDirection import com.android.compose.animation.scene.TransitionKey import com.android.compose.animation.scene.UserAction import com.android.compose.animation.scene.UserActionResult import com.android.systemui.scene.shared.model.Overlays Loading @@ -38,21 +37,25 @@ constructor(private val shadeInteractor: ShadeInteractor) : UserActionsViewModel shadeInteractor.shadeMode.collect { shadeMode -> setActions( when (shadeMode) { ShadeMode.Single -> fullscreenShadeActions() ShadeMode.Split -> fullscreenShadeActions(transitionKey = ToSplitShade) ShadeMode.Single -> singleShadeActions() ShadeMode.Split -> splitShadeActions() ShadeMode.Dual -> dualShadeActions() } ) } } private fun fullscreenShadeActions( transitionKey: TransitionKey? = null ): Map<UserAction, UserActionResult> { private fun singleShadeActions(): Map<UserAction, UserActionResult> { return mapOf( Swipe.Down to UserActionResult(Scenes.Shade, transitionKey), Swipe(direction = SwipeDirection.Down, pointerCount = 2, fromSource = Edge.Top) to UserActionResult(Scenes.Shade, transitionKey), Swipe.Down to Scenes.Shade, swipeDownFromTopWithTwoFingers() to Scenes.QuickSettings, ) } private fun splitShadeActions(): Map<UserAction, UserActionResult> { return mapOf( Swipe.Down to UserActionResult(Scenes.Shade, ToSplitShade), swipeDownFromTopWithTwoFingers() to UserActionResult(Scenes.Shade, ToSplitShade), ) } Loading @@ -64,6 +67,10 @@ constructor(private val shadeInteractor: ShadeInteractor) : UserActionsViewModel ) } private fun swipeDownFromTopWithTwoFingers(): UserAction { return Swipe(direction = SwipeDirection.Down, pointerCount = 2, fromSource = Edge.Top) } @AssistedFactory interface Factory { fun create(): GoneUserActionsViewModel Loading Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/scene/ui/viewmodel/GoneUserActionsViewModelTest.kt +42 −0 Original line number Diff line number Diff line Loading @@ -21,13 +21,17 @@ import android.platform.test.annotations.EnableFlags import android.testing.TestableLooper import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.compose.animation.scene.Edge 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.SysuiTestCase import com.android.systemui.coroutines.collectLastValue import com.android.systemui.flags.EnableSceneContainer import com.android.systemui.kosmos.testScope import com.android.systemui.lifecycle.activateIn import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.scene.shared.model.TransitionKeys.ToSplitShade import com.android.systemui.shade.data.repository.shadeRepository import com.android.systemui.shade.domain.interactor.shadeInteractor Loading Loading @@ -92,4 +96,42 @@ class GoneUserActionsViewModelTest : SysuiTestCase() { assertThat(userActions?.get(Swipe(SwipeDirection.Down))?.transitionKey).isNull() } @Test @DisableFlags(DualShade.FLAG_NAME) fun swipeDownWithTwoFingers_singleShade_goesToQuickSettings() = testScope.runTest { val userActions by collectLastValue(underTest.actions) shadeRepository.setShadeLayoutWide(false) runCurrent() assertThat(userActions?.get(swipeDownFromTopWithTwoFingers())) .isEqualTo(UserActionResult(Scenes.QuickSettings)) } @Test @DisableFlags(DualShade.FLAG_NAME) fun swipeDownWithTwoFingers_splitShade_goesToShade() = testScope.runTest { val userActions by collectLastValue(underTest.actions) shadeRepository.setShadeLayoutWide(true) runCurrent() assertThat(userActions?.get(swipeDownFromTopWithTwoFingers())) .isEqualTo(UserActionResult(Scenes.Shade, ToSplitShade)) } @Test @EnableFlags(DualShade.FLAG_NAME) fun swipeDownWithTwoFingers_dualShadeEnabled_isNull() = testScope.runTest { val userActions by collectLastValue(underTest.actions) runCurrent() assertThat(userActions?.get(swipeDownFromTopWithTwoFingers())).isNull() } private fun swipeDownFromTopWithTwoFingers(): UserAction { return Swipe(direction = SwipeDirection.Down, pointerCount = 2, fromSource = Edge.Top) } }
packages/SystemUI/src/com/android/systemui/scene/ui/viewmodel/GoneUserActionsViewModel.kt +16 −9 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ package com.android.systemui.scene.ui.viewmodel import com.android.compose.animation.scene.Edge import com.android.compose.animation.scene.Swipe import com.android.compose.animation.scene.SwipeDirection import com.android.compose.animation.scene.TransitionKey import com.android.compose.animation.scene.UserAction import com.android.compose.animation.scene.UserActionResult import com.android.systemui.scene.shared.model.Overlays Loading @@ -38,21 +37,25 @@ constructor(private val shadeInteractor: ShadeInteractor) : UserActionsViewModel shadeInteractor.shadeMode.collect { shadeMode -> setActions( when (shadeMode) { ShadeMode.Single -> fullscreenShadeActions() ShadeMode.Split -> fullscreenShadeActions(transitionKey = ToSplitShade) ShadeMode.Single -> singleShadeActions() ShadeMode.Split -> splitShadeActions() ShadeMode.Dual -> dualShadeActions() } ) } } private fun fullscreenShadeActions( transitionKey: TransitionKey? = null ): Map<UserAction, UserActionResult> { private fun singleShadeActions(): Map<UserAction, UserActionResult> { return mapOf( Swipe.Down to UserActionResult(Scenes.Shade, transitionKey), Swipe(direction = SwipeDirection.Down, pointerCount = 2, fromSource = Edge.Top) to UserActionResult(Scenes.Shade, transitionKey), Swipe.Down to Scenes.Shade, swipeDownFromTopWithTwoFingers() to Scenes.QuickSettings, ) } private fun splitShadeActions(): Map<UserAction, UserActionResult> { return mapOf( Swipe.Down to UserActionResult(Scenes.Shade, ToSplitShade), swipeDownFromTopWithTwoFingers() to UserActionResult(Scenes.Shade, ToSplitShade), ) } Loading @@ -64,6 +67,10 @@ constructor(private val shadeInteractor: ShadeInteractor) : UserActionsViewModel ) } private fun swipeDownFromTopWithTwoFingers(): UserAction { return Swipe(direction = SwipeDirection.Down, pointerCount = 2, fromSource = Edge.Top) } @AssistedFactory interface Factory { fun create(): GoneUserActionsViewModel Loading