Merge "Fix home/overview threshold." into tm-qpr-dev
diff --git a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java
index b09e531..28e783f 100644
--- a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java
+++ b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java
@@ -317,6 +317,9 @@
     private final int mTaskbarAppWindowThreshold;
     private final int mTaskbarCatchUpThreshold;
     private boolean mTaskbarAlreadyOpen;
+    private final boolean mIsTransientTaskbar;
+    // Only used when mIsTransientTaskbar is true.
+    private boolean mHasReachedHomeOverviewThreshold;
 
     public AbsSwipeUpHandler(Context context, RecentsAnimationDeviceState deviceState,
             TaskAnimationManager taskAnimationManager, GestureState gestureState,
@@ -343,6 +346,7 @@
         mTaskbarAppWindowThreshold = res
                 .getDimensionPixelSize(R.dimen.taskbar_app_window_threshold);
         mTaskbarCatchUpThreshold = res.getDimensionPixelSize(R.dimen.taskbar_catch_up_threshold);
+        mIsTransientTaskbar = DisplayController.isTransientTaskbar(mActivity);
 
         mQuickSwitchScaleScrollThreshold = res
                 .getDimension(R.dimen.quick_switch_scaling_scroll_threshold);
@@ -819,7 +823,7 @@
     @UiThread
     @Override
     public void updateFinalShift() {
-        final boolean passed = mCurrentShift.value >= MIN_PROGRESS_FOR_OVERVIEW;
+        final boolean passed = hasReachedHomeOverviewThreshold();
         if (passed != mPassedOverviewThreshold) {
             mPassedOverviewThreshold = passed;
             if (mDeviceState.isTwoButtonNavMode() && !mGestureState.isHandlingAtomicEvent()) {
@@ -1145,16 +1149,16 @@
         }
 
         if (!mDeviceState.isFullyGesturalNavMode()) {
-            return (!hasReachedOverviewThreshold() && willGoToNewTask) ? NEW_TASK : RECENTS;
+            return (!hasReachedHomeOverviewThreshold() && willGoToNewTask) ? NEW_TASK : RECENTS;
         }
         return willGoToNewTask ? NEW_TASK : HOME;
     }
 
     private GestureEndTarget calculateEndTargetForNonFling(PointF velocity) {
         final boolean isScrollingToNewTask = isScrollingToNewTask();
-        final boolean reachedOverviewThreshold = hasReachedOverviewThreshold();
+        final boolean reachedHomeOverviewThreshold = hasReachedHomeOverviewThreshold();
         if (!mDeviceState.isFullyGesturalNavMode()) {
-            return reachedOverviewThreshold && mGestureStarted
+            return reachedHomeOverviewThreshold && mGestureStarted
                     ? RECENTS
                     : (isScrollingToNewTask ? NEW_TASK : LAST_TASK);
         }
@@ -1170,7 +1174,7 @@
             return RECENTS;
         } else if (isScrollingToNewTask) {
             return NEW_TASK;
-        } else if (reachedOverviewThreshold) {
+        } else if (reachedHomeOverviewThreshold) {
             return HOME;
         }
         return LAST_TASK;
@@ -1189,8 +1193,22 @@
         return runningTaskIndex >= 0 && mRecentsView.getNextPage() != runningTaskIndex;
     }
 
-    private boolean hasReachedOverviewThreshold() {
-        return getTaskbarProgress() > MIN_PROGRESS_FOR_OVERVIEW;
+    /**
+     * Sets whether the current swipe has reached the threshold where if user lets go they would
+     * go to either the home state or overview state.
+     */
+    public void setHasReachedHomeOverviewThreshold(boolean hasReachedHomeOverviewThreshold) {
+        mHasReachedHomeOverviewThreshold = hasReachedHomeOverviewThreshold;
+    }
+
+    /**
+     * Returns true iff swipe has reached the overview threshold.
+     */
+    public boolean hasReachedHomeOverviewThreshold() {
+        if (mIsTransientTaskbar) {
+            return mHasReachedHomeOverviewThreshold;
+        }
+        return mCurrentShift.value > MIN_PROGRESS_FOR_OVERVIEW;
     }
 
     @UiThread
@@ -2267,7 +2285,7 @@
      * There is also a catch up period so that the window can start moving 1:1 with the swipe.
      */
     private float getTaskbarProgress() {
-        if (!DisplayController.isTransientTaskbar(mContext)) {
+        if (!mIsTransientTaskbar) {
             return mCurrentShift.value;
         }
 
diff --git a/quickstep/src/com/android/quickstep/inputconsumers/OtherActivityInputConsumer.java b/quickstep/src/com/android/quickstep/inputconsumers/OtherActivityInputConsumer.java
index b3d3c3d..503644a 100644
--- a/quickstep/src/com/android/quickstep/inputconsumers/OtherActivityInputConsumer.java
+++ b/quickstep/src/com/android/quickstep/inputconsumers/OtherActivityInputConsumer.java
@@ -36,7 +36,6 @@
 import android.content.Context;
 import android.content.ContextWrapper;
 import android.content.Intent;
-import android.content.res.Resources;
 import android.graphics.PointF;
 import android.os.Build;
 import android.util.Log;
@@ -151,10 +150,6 @@
         mHandlerFactory = handlerFactory;
         mActivityInterface = mGestureState.getActivityInterface();
 
-        Resources res = base.getResources();
-        mTaskbarHomeOverviewThreshold = res
-                .getDimensionPixelSize(R.dimen.taskbar_home_overview_threshold);
-
         mMotionPauseDetector = new MotionPauseDetector(base, false,
                 mNavBarPosition.isLeftEdge() || mNavBarPosition.isRightEdge()
                         ? MotionEvent.AXIS_X : MotionEvent.AXIS_Y);
@@ -168,6 +163,8 @@
         TaskbarUIController controller = mActivityInterface.getTaskbarController();
         mTaskbarAlreadyOpen = controller != null && !controller.isTaskbarStashed();
         mIsTransientTaskbar = DisplayController.isTransientTaskbar(base);
+        mTaskbarHomeOverviewThreshold = base.getResources()
+                .getDimensionPixelSize(R.dimen.taskbar_home_overview_threshold);
 
         boolean continuingPreviousGesture = mTaskAnimationManager.isRecentsAnimationRunning();
         mIsDeferredDownTarget = !continuingPreviousGesture && isDeferredDownTarget;
@@ -340,13 +337,12 @@
                     }
 
                     if (mDeviceState.isFullyGesturalNavMode()) {
-                        float minDisplacement = mMotionPauseMinDisplacement;
-
-                        if (mIsTransientTaskbar && !mTaskbarAlreadyOpen) {
-                            minDisplacement += mTaskbarHomeOverviewThreshold;
+                        boolean minSwipeMet = upDist >= mMotionPauseMinDisplacement;
+                        if (mIsTransientTaskbar) {
+                            minSwipeMet = upDist >= mTaskbarHomeOverviewThreshold;
+                            mInteractionHandler.setHasReachedHomeOverviewThreshold(minSwipeMet);
                         }
-
-                        mMotionPauseDetector.setDisallowPause(upDist < minDisplacement
+                        mMotionPauseDetector.setDisallowPause(!minSwipeMet
                                 || isLikelyToStartNewTask);
                         mMotionPauseDetector.addPosition(ev);
                         mInteractionHandler.setIsLikelyToStartNewTask(isLikelyToStartNewTask);