Merge "[Flexiglass] Fix 2-finger swipe on single shade to go to Quick Settings." into main
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/ui/viewmodel/GoneUserActionsViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/ui/viewmodel/GoneUserActionsViewModelTest.kt
index e6a24e3..5c47f55 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/ui/viewmodel/GoneUserActionsViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/ui/viewmodel/GoneUserActionsViewModelTest.kt
@@ -21,13 +21,17 @@
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
@@ -92,4 +96,42 @@
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)
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/scene/ui/viewmodel/GoneUserActionsViewModel.kt b/packages/SystemUI/src/com/android/systemui/scene/ui/viewmodel/GoneUserActionsViewModel.kt
index 7bf2b63..5ff507a 100644
--- a/packages/SystemUI/src/com/android/systemui/scene/ui/viewmodel/GoneUserActionsViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/scene/ui/viewmodel/GoneUserActionsViewModel.kt
@@ -19,7 +19,6 @@
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
@@ -38,21 +37,25 @@
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),
)
}
@@ -64,6 +67,10 @@
)
}
+ private fun swipeDownFromTopWithTwoFingers(): UserAction {
+ return Swipe(direction = SwipeDirection.Down, pointerCount = 2, fromSource = Edge.Top)
+ }
+
@AssistedFactory
interface Factory {
fun create(): GoneUserActionsViewModel