Merge "Additional Assistant gesture tuning" into ub-launcher3-qt-dev
diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/AssistantTouchConsumer.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/AssistantTouchConsumer.java
index be87a96..86f0fca 100644
--- a/quickstep/recents_ui_overrides/src/com/android/quickstep/AssistantTouchConsumer.java
+++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/AssistantTouchConsumer.java
@@ -38,7 +38,6 @@
 import android.view.MotionEvent;
 import com.android.launcher3.anim.Interpolators;
 import com.android.launcher3.logging.UserEventDispatcher;
-import com.android.quickstep.util.MotionPauseDetector;
 import com.android.systemui.shared.recents.ISystemUiProxy;
 import com.android.launcher3.R;
 import com.android.systemui.shared.system.InputMonitorCompat;
@@ -82,7 +81,6 @@
     private final long mTimeThreshold;
     private final int mAngleThreshold;
     private final float mSlop;
-    private final MotionPauseDetector mMotionPauseDetector;
     private final ISystemUiProxy mSysUiProxy;
     private final InputConsumer mConsumerDelegate;
     private final Context mContext;
@@ -96,11 +94,10 @@
         mContext = context;
         mSysUiProxy = systemUiProxy;
         mConsumerDelegate = delegate;
-        mMotionPauseDetector = new MotionPauseDetector(context);
         mDistThreshold = res.getDimension(R.dimen.gestures_assistant_drag_threshold);
         mTimeThreshold = res.getInteger(R.integer.assistant_gesture_min_time_threshold);
         mAngleThreshold = res.getInteger(R.integer.assistant_gesture_corner_deg_threshold);
-        mSlop = NavigationBarCompat.getQuickScrubTouchSlopPx();
+        mSlop = NavigationBarCompat.getQuickStepDragSlopPx();
         mInputMonitorCompat = inputMonitorCompat;
         mState = STATE_INACTIVE;
     }
@@ -111,8 +108,18 @@
     }
 
     @Override
-    public boolean isActive() {
-        return mState != STATE_INACTIVE;
+    public boolean useSharedSwipeState() {
+        if (mConsumerDelegate != null) {
+            return mConsumerDelegate.useSharedSwipeState();
+        }
+        return false;
+    }
+
+    @Override
+    public void onConsumerAboutToBeSwitched() {
+        if (mConsumerDelegate != null) {
+            mConsumerDelegate.onConsumerAboutToBeSwitched();
+        }
     }
 
     @Override
@@ -125,14 +132,6 @@
                 mDownPos.set(ev.getX(), ev.getY());
                 mLastPos.set(mDownPos);
                 mTimeFraction = 0;
-
-                // Detect when the gesture decelerates to start the assistant
-                mMotionPauseDetector.setOnMotionPauseListener(isPaused -> {
-                    if (isPaused && mState == STATE_ASSISTANT_ACTIVE) {
-                        mTimeFraction = 1;
-                        updateAssistantProgress();
-                    }
-                });
                 break;
             }
             case ACTION_POINTER_UP: {
@@ -175,7 +174,7 @@
                         mDirection = angle > 90 ? UPLEFT : UPRIGHT;
                         angle = angle > 90 ? 180 - angle : angle;
 
-                        if (angle > mAngleThreshold && angle < 90 - mAngleThreshold) {
+                        if (angle > mAngleThreshold && angle < 90) {
                             mState = STATE_ASSISTANT_ACTIVE;
 
                             if (mConsumerDelegate != null) {
@@ -193,7 +192,6 @@
                     // Movement
                     mDistance = (float) Math.hypot(mLastPos.x - mStartDragPos.x,
                             mLastPos.y - mStartDragPos.y);
-                    mMotionPauseDetector.addPosition(mDistance, 0, ev.getEventTime());
                     if (mDistance >= 0) {
                         final long diff = SystemClock.uptimeMillis() - mDragTime;
                         mTimeFraction = Math.min(diff * 1f / mTimeThreshold, 1);
@@ -222,8 +220,8 @@
                     animator.setInterpolator(Interpolators.DEACCEL_2);
                     animator.start();
                 }
+                mPassedSlop = false;
                 mState = STATE_INACTIVE;
-                mMotionPauseDetector.clear();
                 break;
         }
 
@@ -243,6 +241,7 @@
                             SWIPE, mDirection, NAVBAR);
                     Bundle args = new Bundle();
                     args.putInt(INVOCATION_TYPE_KEY, INVOCATION_TYPE_GESTURE);
+
                     mSysUiProxy.startAssistant(args);
                     mLaunchedAssistant = true;
                 }
diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/InputConsumer.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/InputConsumer.java
index ad9fe78..e3f9e02 100644
--- a/quickstep/recents_ui_overrides/src/com/android/quickstep/InputConsumer.java
+++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/InputConsumer.java
@@ -34,7 +34,7 @@
 
     int getType();
 
-    default boolean isActive() {
+    default boolean useSharedSwipeState() {
         return false;
     }
 
diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/OtherActivityInputConsumer.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/OtherActivityInputConsumer.java
index 9c8e80e..03af92d 100644
--- a/quickstep/recents_ui_overrides/src/com/android/quickstep/OtherActivityInputConsumer.java
+++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/OtherActivityInputConsumer.java
@@ -413,7 +413,7 @@
     }
 
     @Override
-    public boolean isActive() {
+    public boolean useSharedSwipeState() {
         return mInteractionHandler != null;
     }
 }
diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/TouchInteractionService.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/TouchInteractionService.java
index 95dea50..ff52323 100644
--- a/quickstep/recents_ui_overrides/src/com/android/quickstep/TouchInteractionService.java
+++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/TouchInteractionService.java
@@ -422,7 +422,7 @@
         if (event.getAction() == ACTION_DOWN) {
             if (isInValidSystemUiState()
                     && mSwipeTouchRegion.contains(event.getX(), event.getY())) {
-                boolean useSharedState = mConsumer.isActive();
+                boolean useSharedState = mConsumer.useSharedSwipeState();
                 mConsumer.onConsumerAboutToBeSwitched();
                 mConsumer = newConsumer(useSharedState, event);
                 TOUCH_INTERACTION_LOG.addLog("setInputConsumer", mConsumer.getType());
@@ -460,8 +460,12 @@
         } else if (mAssistantAvailable
                 && SysUINavigationMode.INSTANCE.get(this).getMode() == Mode.NO_BUTTON
                 && AssistantTouchConsumer.withinTouchRegion(this, event)) {
-            return new AssistantTouchConsumer(this, mISystemUiProxy, !activityControl.isResumed()
-                            ? createOtherActivityInputConsumer(event, runningTaskInfo) : null, mInputMonitorCompat);
+
+            boolean addDelegate = !activityControl.isResumed();
+            return new AssistantTouchConsumer(this, mISystemUiProxy, addDelegate ?
+                    createOtherActivityInputConsumer(event, runningTaskInfo) : null,
+                    mInputMonitorCompat);
+
         } else if (mSwipeSharedState.goingToLauncher || activityControl.isResumed()) {
             return OverviewInputConsumer.newInstance(activityControl, false);
         } else if (ENABLE_QUICKSTEP_LIVE_TILE.get() &&
diff --git a/quickstep/res/values/config.xml b/quickstep/res/values/config.xml
index e29d3df..95aea43 100644
--- a/quickstep/res/values/config.xml
+++ b/quickstep/res/values/config.xml
@@ -29,5 +29,5 @@
 
     <!-- Assistant Gesture -->
     <integer name="assistant_gesture_min_time_threshold">200</integer>
-    <integer name="assistant_gesture_corner_deg_threshold">10</integer>
+    <integer name="assistant_gesture_corner_deg_threshold">20</integer>
 </resources>
diff --git a/quickstep/res/values/dimens.xml b/quickstep/res/values/dimens.xml
index 75959d1..13a0435 100644
--- a/quickstep/res/values/dimens.xml
+++ b/quickstep/res/values/dimens.xml
@@ -66,7 +66,7 @@
 
     <!-- Assistant Gestures -->
     <dimen name="gestures_assistant_size">48dp</dimen>
-    <dimen name="gestures_assistant_drag_threshold">70dp</dimen>
+    <dimen name="gestures_assistant_drag_threshold">55dp</dimen>
 
     <!-- Distance to move elements when swiping up to go home from launcher -->
     <dimen name="home_pullback_distance">28dp</dimen>