From 60d6151b6e36e80a4574171277aac2be96d932ca Mon Sep 17 00:00:00 2001 From: Tracy Zhou Date: Wed, 18 Jan 2023 05:34:39 +0000 Subject: [PATCH] [Gesture Library Integration] Update the check for motion events on trackpad The gesture library is ported and enabled, thus we are updating our check for motion events on trackpad. Bug: 255697805 Test: 3-finger horizontal swipe in app; make sure back is animated and triggered. Change-Id: If37a767da53320f5cdf3925f6203e1fbcc6a3c38 --- .../navigationbar/gestural/Utilities.java | 8 +++---- .../gestural/MotionEventsHandlerTest.java | 24 ++++++++----------- 2 files changed, 13 insertions(+), 19 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/Utilities.java b/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/Utilities.java index 335172e886bb6..30d2d7a8f37d3 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/Utilities.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/Utilities.java @@ -16,7 +16,7 @@ package com.android.systemui.navigationbar.gestural; -import static android.view.InputDevice.SOURCE_TOUCHSCREEN; +import static android.view.MotionEvent.CLASSIFICATION_MULTI_FINGER_SWIPE; import android.content.Context; import android.view.MotionEvent; @@ -24,14 +24,12 @@ import android.view.ViewConfiguration; public final class Utilities { - private static final int TRACKPAD_GESTURE_SCALE = 60; + private static final int TRACKPAD_GESTURE_SCALE = 200; public static boolean isTrackpadMotionEvent(boolean isTrackpadGestureBackEnabled, MotionEvent event) { - // TODO: ideally should use event.getClassification(), but currently only the move - // events get assigned the correct classification. return isTrackpadGestureBackEnabled - && (event.getSource() & SOURCE_TOUCHSCREEN) != SOURCE_TOUCHSCREEN; + && event.getClassification() == CLASSIFICATION_MULTI_FINGER_SWIPE; } public static int getTrackpadScale(Context context) { diff --git a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/gestural/MotionEventsHandlerTest.java b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/gestural/MotionEventsHandlerTest.java index 509d5f0cb4204..70ba306bfe46d 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/gestural/MotionEventsHandlerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/gestural/MotionEventsHandlerTest.java @@ -16,10 +16,10 @@ package com.android.systemui.navigationbar.gestural; -import static android.view.InputDevice.SOURCE_TOUCHPAD; -import static android.view.InputDevice.SOURCE_TOUCHSCREEN; +import static android.view.InputDevice.SOURCE_MOUSE; import static android.view.MotionEvent.AXIS_GESTURE_X_OFFSET; import static android.view.MotionEvent.AXIS_GESTURE_Y_OFFSET; +import static android.view.MotionEvent.CLASSIFICATION_MULTI_FINGER_SWIPE; import static com.google.common.truth.Truth.assertThat; @@ -57,14 +57,9 @@ public class MotionEventsHandlerTest extends SysuiTestCase { @Test public void onTouchEvent_touchScreen_hasCorrectDisplacements() { MotionEvent down = MotionEvent.obtain(0, 0, MotionEvent.ACTION_DOWN, 100, 100, 0); - // TODO: change to use classification after gesture library is ported. - down.setSource(SOURCE_TOUCHSCREEN); MotionEvent move1 = MotionEvent.obtain(0, 1, MotionEvent.ACTION_MOVE, 150, 125, 0); - move1.setSource(SOURCE_TOUCHSCREEN); MotionEvent move2 = MotionEvent.obtain(0, 2, MotionEvent.ACTION_MOVE, 200, 150, 0); - move2.setSource(SOURCE_TOUCHSCREEN); MotionEvent up = MotionEvent.obtain(0, 3, MotionEvent.ACTION_UP, 250, 175, 0); - up.setSource(SOURCE_TOUCHSCREEN); mMotionEventsHandler.onMotionEvent(down); mMotionEventsHandler.onMotionEvent(move1); @@ -90,8 +85,8 @@ public class MotionEventsHandlerTest extends SysuiTestCase { downPointerProperties[0].id = 1; downPointerProperties[0].toolType = MotionEvent.TOOL_TYPE_FINGER; MotionEvent down = MotionEvent.obtain(0, 0, MotionEvent.ACTION_DOWN, 1, - downPointerProperties, downPointerCoords, 0, 0, 1.0f, 1.0f, 0, 0, - SOURCE_TOUCHPAD, 0); + downPointerProperties, downPointerCoords, 0, 0, 1.0f, 1.0f, 0, 0, SOURCE_MOUSE, + 0, 0, CLASSIFICATION_MULTI_FINGER_SWIPE); MotionEvent.PointerCoords[] movePointerCoords1 = new MotionEvent.PointerCoords[1]; movePointerCoords1[0] = new MotionEvent.PointerCoords(); @@ -103,8 +98,8 @@ public class MotionEventsHandlerTest extends SysuiTestCase { movePointerProperties1[0].id = 1; movePointerProperties1[0].toolType = MotionEvent.TOOL_TYPE_FINGER; MotionEvent move1 = MotionEvent.obtain(0, 1, MotionEvent.ACTION_MOVE, 1, - movePointerProperties1, movePointerCoords1, 0, 0, 1.0f, 1.0f, 0, 0, SOURCE_TOUCHPAD, - 0); + movePointerProperties1, movePointerCoords1, 0, 0, 1.0f, 1.0f, 0, 0, SOURCE_MOUSE, + 0, 0, CLASSIFICATION_MULTI_FINGER_SWIPE); MotionEvent.PointerCoords[] movePointerCoords2 = new MotionEvent.PointerCoords[1]; movePointerCoords2[0] = new MotionEvent.PointerCoords(); @@ -116,8 +111,8 @@ public class MotionEventsHandlerTest extends SysuiTestCase { movePointerProperties2[0].id = 1; movePointerProperties2[0].toolType = MotionEvent.TOOL_TYPE_FINGER; MotionEvent move2 = MotionEvent.obtain(0, 2, MotionEvent.ACTION_MOVE, 1, - movePointerProperties2, movePointerCoords2, 0, 0, 1.0f, 1.0f, 0, 0, SOURCE_TOUCHPAD, - 0); + movePointerProperties2, movePointerCoords2, 0, 0, 1.0f, 1.0f, 0, 0, SOURCE_MOUSE, + 0, 0, CLASSIFICATION_MULTI_FINGER_SWIPE); MotionEvent.PointerCoords[] upPointerCoords = new MotionEvent.PointerCoords[1]; upPointerCoords[0] = new MotionEvent.PointerCoords(); @@ -129,7 +124,8 @@ public class MotionEventsHandlerTest extends SysuiTestCase { upPointerProperties2[0].id = 1; upPointerProperties2[0].toolType = MotionEvent.TOOL_TYPE_FINGER; MotionEvent up = MotionEvent.obtain(0, 2, MotionEvent.ACTION_UP, 1, - upPointerProperties2, upPointerCoords, 0, 0, 1.0f, 1.0f, 0, 0, SOURCE_TOUCHPAD, 0); + upPointerProperties2, upPointerCoords, 0, 0, 1.0f, 1.0f, 0, 0, SOURCE_MOUSE, + 0, 0, CLASSIFICATION_MULTI_FINGER_SWIPE); mMotionEventsHandler.onMotionEvent(down); mMotionEventsHandler.onMotionEvent(move1);