Merge "Jump to the nearest page to launch when swiping down on shelf" into ub-launcher3-qt-dev
diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/DeviceLockedInputConsumer.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/DeviceLockedInputConsumer.java
index d919a3e..7fd09f7 100644
--- a/quickstep/recents_ui_overrides/src/com/android/quickstep/DeviceLockedInputConsumer.java
+++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/DeviceLockedInputConsumer.java
@@ -17,7 +17,9 @@
 
 import android.content.Context;
 import android.content.Intent;
+import android.graphics.PointF;
 import android.view.MotionEvent;
+import android.view.ViewConfiguration;
 
 /**
  * A dummy input consumer used when the device is still locked, e.g. from secure camera.
@@ -25,9 +27,13 @@
 public class DeviceLockedInputConsumer implements InputConsumer {
 
     private final Context mContext;
+    private final float mTouchSlopSquared;
+    private final PointF mTouchDown = new PointF();
 
     public DeviceLockedInputConsumer(Context context) {
         mContext = context;
+        float touchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
+        mTouchSlopSquared = touchSlop * touchSlop;
     }
 
     @Override
@@ -37,11 +43,19 @@
 
     @Override
     public void onMotionEvent(MotionEvent ev) {
-        // For now, just start the home intent so user is prompted to unlock the device.
+        float x = ev.getX();
+        float y = ev.getY();
         if (ev.getAction() == MotionEvent.ACTION_DOWN) {
-            mContext.startActivity(new Intent(Intent.ACTION_MAIN)
-                    .addCategory(Intent.CATEGORY_HOME)
-                    .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
+            mTouchDown.set(x, y);
+        } else if (ev.getAction() == MotionEvent.ACTION_MOVE) {
+            float xSquared = (x - mTouchDown.x) * (x - mTouchDown.x);
+            float ySquared = (y - mTouchDown.y) * (y - mTouchDown.y);
+            if (xSquared + ySquared > mTouchSlopSquared) {
+                // For now, just start the home intent so user is prompted to unlock the device.
+                mContext.startActivity(new Intent(Intent.ACTION_MAIN)
+                        .addCategory(Intent.CATEGORY_HOME)
+                        .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
+            }
         }
     }
 }