summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Michał Brzeziński <brzezinski@google.com> 2024-12-16 09:15:41 -0800
committer Android (Google) Code Review <android-gerrit@google.com> 2024-12-16 09:15:41 -0800
commit5091b48b954e6581f9fea623abfda4078341c7cc (patch)
treea353a58b199d568aaa65e3f04e8648973ba0ffd5
parente85ef511def9592fabfc4eb4c7980162c4bda672 (diff)
parent683104b9be9a46a78a1d4e7cd275f0472f9655e4 (diff)
Merge "Adding error state when gesture is using incorrect number of fingers" into main
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/touchpad/tutorial/ui/gesture/ThreeFingerGestureRecognizerTest.kt35
-rw-r--r--packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/gesture/BackGestureRecognizer.kt8
-rw-r--r--packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/gesture/GestureRecognizer.kt5
-rw-r--r--packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/gesture/HomeGestureRecognizer.kt8
-rw-r--r--packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/gesture/RecentAppsGestureRecognizer.kt8
-rw-r--r--packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/gesture/TouchpadGestureHandler.kt3
6 files changed, 58 insertions, 9 deletions
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/touchpad/tutorial/ui/gesture/ThreeFingerGestureRecognizerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/touchpad/tutorial/ui/gesture/ThreeFingerGestureRecognizerTest.kt
index 533665eaa626..8972f3ec71af 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/touchpad/tutorial/ui/gesture/ThreeFingerGestureRecognizerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/touchpad/tutorial/ui/gesture/ThreeFingerGestureRecognizerTest.kt
@@ -83,13 +83,40 @@ class ThreeFingerGestureRecognizerTest(
}
@Test
- fun doesntTriggerGestureFinished_onTwoFingersSwipe() {
- assertStateAfterEvents(events = TwoFingerGesture.swipeRight(), expectedState = NotStarted)
+ fun triggersGestureError_onTwoFingersSwipe() {
+ assertStateAfterEvents(events = TwoFingerGesture.swipeRight(), expectedState = Error)
}
@Test
- fun doesntTriggerGestureFinished_onFourFingersSwipe() {
- assertStateAfterEvents(events = FourFingerGesture.swipeRight(), expectedState = NotStarted)
+ fun doesntTriggerGestureError_TwoFingerSwipeInProgress() {
+ assertStateAfterEvents(
+ events = TwoFingerGesture.eventsForGestureInProgress { move(deltaX = SWIPE_DISTANCE) },
+ expectedState = NotStarted,
+ )
+ }
+
+ @Test
+ fun triggersGestureError_onFourFingersSwipe() {
+ assertStateAfterEvents(events = FourFingerGesture.swipeRight(), expectedState = Error)
+ }
+
+ @Test
+ fun doesntTriggerGestureError_FourFingerSwipeInProgress() {
+ assertStateAfterEvents(
+ events = FourFingerGesture.eventsForGestureInProgress { move(deltaX = SWIPE_DISTANCE) },
+ expectedState = NotStarted,
+ )
+ }
+
+ @Test
+ fun ignoresOneFingerSwipes() {
+ val oneFingerSwipe =
+ listOf(
+ touchpadEvent(MotionEvent.ACTION_DOWN, 50f, 50f),
+ touchpadEvent(MotionEvent.ACTION_MOVE, 55f, 55f),
+ touchpadEvent(MotionEvent.ACTION_UP, 60f, 60f),
+ )
+ assertStateAfterEvents(events = oneFingerSwipe, expectedState = NotStarted)
}
private fun assertStateAfterEvents(events: List<MotionEvent>, expectedState: GestureState) {
diff --git a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/gesture/BackGestureRecognizer.kt b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/gesture/BackGestureRecognizer.kt
index 35ea0ea3e048..64cda1f21cf6 100644
--- a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/gesture/BackGestureRecognizer.kt
+++ b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/gesture/BackGestureRecognizer.kt
@@ -41,7 +41,13 @@ class BackGestureRecognizer(private val gestureDistanceThresholdPx: Int) : Gestu
}
override fun accept(event: MotionEvent) {
- if (!isThreeFingerTouchpadSwipe(event)) return
+ if (!isMultifingerTouchpadSwipe(event)) return
+ if (!isThreeFingerTouchpadSwipe(event)) {
+ if (event.actionMasked == MotionEvent.ACTION_UP) {
+ gestureStateChangedCallback(GestureState.Error)
+ }
+ return
+ }
val gestureState = distanceTracker.processEvent(event)
updateGestureState(
gestureStateChangedCallback,
diff --git a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/gesture/GestureRecognizer.kt b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/gesture/GestureRecognizer.kt
index 68a2ef9528eb..884f08eae22d 100644
--- a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/gesture/GestureRecognizer.kt
+++ b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/gesture/GestureRecognizer.kt
@@ -35,6 +35,11 @@ private fun isNFingerTouchpadSwipe(event: MotionEvent, fingerCount: Int): Boolea
event.getAxisValue(MotionEvent.AXIS_GESTURE_SWIPE_FINGER_COUNT) == fingerCount.toFloat()
}
+fun isMultifingerTouchpadSwipe(event: MotionEvent): Boolean {
+ return event.classification == MotionEvent.CLASSIFICATION_MULTI_FINGER_SWIPE ||
+ event.classification == MotionEvent.CLASSIFICATION_TWO_FINGER_SWIPE
+}
+
fun isTwoFingerSwipe(event: MotionEvent): Boolean {
return event.classification == MotionEvent.CLASSIFICATION_TWO_FINGER_SWIPE
}
diff --git a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/gesture/HomeGestureRecognizer.kt b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/gesture/HomeGestureRecognizer.kt
index 9801626dac8f..7767a46f7318 100644
--- a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/gesture/HomeGestureRecognizer.kt
+++ b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/gesture/HomeGestureRecognizer.kt
@@ -40,7 +40,13 @@ class HomeGestureRecognizer(
}
override fun accept(event: MotionEvent) {
- if (!isThreeFingerTouchpadSwipe(event)) return
+ if (!isMultifingerTouchpadSwipe(event)) return
+ if (!isThreeFingerTouchpadSwipe(event)) {
+ if (event.actionMasked == MotionEvent.ACTION_UP) {
+ gestureStateChangedCallback(GestureState.Error)
+ }
+ return
+ }
val gestureState = distanceTracker.processEvent(event)
velocityTracker.accept(event)
updateGestureState(
diff --git a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/gesture/RecentAppsGestureRecognizer.kt b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/gesture/RecentAppsGestureRecognizer.kt
index 5ff583a19ee9..74746de0562c 100644
--- a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/gesture/RecentAppsGestureRecognizer.kt
+++ b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/gesture/RecentAppsGestureRecognizer.kt
@@ -43,7 +43,13 @@ class RecentAppsGestureRecognizer(
}
override fun accept(event: MotionEvent) {
- if (!isThreeFingerTouchpadSwipe(event)) return
+ if (!isMultifingerTouchpadSwipe(event)) return
+ if (!isThreeFingerTouchpadSwipe(event)) {
+ if (event.actionMasked == MotionEvent.ACTION_UP) {
+ gestureStateChangedCallback(GestureState.Error)
+ }
+ return
+ }
val gestureState = distanceTracker.processEvent(event)
velocityTracker.accept(event)
diff --git a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/gesture/TouchpadGestureHandler.kt b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/gesture/TouchpadGestureHandler.kt
index 21e2917cf01b..dd275bd11d1e 100644
--- a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/gesture/TouchpadGestureHandler.kt
+++ b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/gesture/TouchpadGestureHandler.kt
@@ -40,9 +40,8 @@ class TouchpadGestureHandler(
return if (isFromTouchpad && !buttonClick) {
if (isTwoFingerSwipe(event)) {
easterEggGestureMonitor.processTouchpadEvent(event)
- } else {
- gestureRecognizer.accept(event)
}
+ gestureRecognizer.accept(event)
true
} else {
false