Avoiding crash upon pressing Alt-Tab

Having invalid downPos leads to incorrect calculations, causing crash.

Bug: 113287120
Test: Alt-Tabbing?
Change-Id: I44cf733d97da4938bd2bbff28b1c08009f3f602a
diff --git a/quickstep/src/com/android/quickstep/OtherActivityTouchConsumer.java b/quickstep/src/com/android/quickstep/OtherActivityTouchConsumer.java
index c3e0568..27550d1 100644
--- a/quickstep/src/com/android/quickstep/OtherActivityTouchConsumer.java
+++ b/quickstep/src/com/android/quickstep/OtherActivityTouchConsumer.java
@@ -24,6 +24,7 @@
 
 import static com.android.systemui.shared.system.ActivityManagerWrapper
         .CLOSE_SYSTEM_WINDOWS_REASON_RECENTS;
+import static com.android.systemui.shared.system.NavigationBarCompat.HIT_TARGET_NONE;
 import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.MODE_CLOSING;
 
 import android.annotation.TargetApi;
@@ -95,6 +96,7 @@
     private VelocityTracker mVelocityTracker;
     private MotionEventQueue mEventQueue;
     private boolean mIsGoingToHome;
+    private final @HitTarget int mDownHitTarget;
 
     public OtherActivityTouchConsumer(Context base, RunningTaskInfo runningTaskInfo,
             RecentsModel recentsModel, Intent homeIntent, ActivityControlHelper activityControl,
@@ -113,6 +115,7 @@
         mIsDeferredDownTarget = activityControl.deferStartingActivity(downHitTarget);
         mOverviewCallbacks = overviewCallbacks;
         mTaskOverlayFactory = taskOverlayFactory;
+        mDownHitTarget = downHitTarget;
     }
 
     @Override
@@ -122,7 +125,7 @@
 
     @Override
     public void accept(MotionEvent ev) {
-        if (mVelocityTracker == null) {
+        if (mVelocityTracker == null || mDownHitTarget == HIT_TARGET_NONE) {
             return;
         }
         switch (ev.getActionMasked()) {
@@ -279,6 +282,8 @@
      * the animation can still be running.
      */
     private void finishTouchTracking(MotionEvent ev) {
+        if (mDownHitTarget == HIT_TARGET_NONE) return;
+
         if (mPassedInitialSlop && mInteractionHandler != null) {
             mInteractionHandler.updateDisplacement(getDisplacement(ev) - mStartDisplacement);
 
@@ -351,6 +356,8 @@
 
     @Override
     public void onQuickStep(MotionEvent ev) {
+        if (mDownHitTarget == HIT_TARGET_NONE) return;
+
         if (mIsDeferredDownTarget) {
             // Deferred gesture, start the animation and gesture tracking once we pass the actual
             // touch slop
@@ -444,7 +451,8 @@
             } else {
                 TraceHelper.partitionSection("RecentsController", "Received");
                 mInteractionHandler.onRecentsAnimationStart(mController, mTargets,
-                        mHomeContentInsets, mMinimizedHomeBounds, mDownPos);
+                        mHomeContentInsets, mMinimizedHomeBounds,
+                        mDownHitTarget != HIT_TARGET_NONE ? mDownPos : null);
             }
         }
     }