Use movement on the trackpad instead of on screen for trackpad gestures used for gesture nav

Bug: 254783214
Test: https://recall.googleplex.com/projects/3388b17c-d22f-46f8-b140-a102690377b4/sessions/f3311fbc-d8cf-4f19-b83c-8626aa285452
Change-Id: Iad2da5831af85dd3647e1e31b42fea0a6302b49c
diff --git a/src/com/android/launcher3/Utilities.java b/src/com/android/launcher3/Utilities.java
index c11de7f..3c05fe6 100644
--- a/src/com/android/launcher3/Utilities.java
+++ b/src/com/android/launcher3/Utilities.java
@@ -71,6 +71,7 @@
 import android.util.Log;
 import android.util.TypedValue;
 import android.view.MotionEvent;
+import android.view.VelocityTracker;
 import android.view.View;
 import android.view.ViewConfiguration;
 import android.view.animation.Interpolator;
@@ -181,6 +182,8 @@
     public static boolean IS_RUNNING_IN_TEST_HARNESS =
                     ActivityManager.isRunningInTestHarness();
 
+    private static final int TRACKPAD_GESTURE_SCALE = 60;
+
     public static void enableRunningInTestHarnessForTests() {
         IS_RUNNING_IN_TEST_HARNESS = true;
     }
@@ -927,6 +930,38 @@
                 && (event.getSource() & SOURCE_TOUCHSCREEN) != SOURCE_TOUCHSCREEN;
     }
 
+    public static int getTrackpadMotionEventScale(Context context) {
+        return ViewConfiguration.get(context).getScaledTouchSlop() * TRACKPAD_GESTURE_SCALE;
+    }
+
+    public static float getXVelocity(VelocityTracker velocityTracker, MotionEvent event,
+            int pointerId) {
+        // Will be enabled after ag/20353570 is submitted
+//        if (isTrackpadMotionEvent(event)) {
+//            return velocityTracker.getAxisVelocity(AXIS_GESTURE_X_OFFSET, pointerId);
+//        } else {
+            return velocityTracker.getXVelocity(pointerId);
+//        }
+    }
+
+    public static float getXVelocity(VelocityTracker velocityTracker, MotionEvent event) {
+        return getXVelocity(velocityTracker, event, -1 /* ACTIVE_POINTER_ID */);
+    }
+
+    public static float getYVelocity(VelocityTracker velocityTracker, MotionEvent event,
+            int pointerId) {
+        // Will be enabled after ag/20353570 is submitted
+//        if (isTrackpadMotionEvent(event)) {
+//            return velocityTracker.getAxisVelocity(AXIS_GESTURE_Y_OFFSET, pointerId);
+//        } else {
+            return velocityTracker.getYVelocity(pointerId);
+//        }
+    }
+
+    public static float getYVelocity(VelocityTracker velocityTracker, MotionEvent event) {
+        return getYVelocity(velocityTracker, event, -1 /* ACTIVE_POINTER_ID */);
+    }
+
     public static boolean bothNull(@Nullable Object a, @Nullable Object b) {
         return a == null && b == null;
     }