Merge "Don't reset GestureState when touching outside of swipe region" into ub-launcher3-rvc-dev am: 698dfc03cb

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/11944579

Change-Id: I1dff771a82a76f5ab8d1f3a579ef6f943c28d6f9
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 abc2a9c..bfdddbd 100644
--- a/quickstep/recents_ui_overrides/src/com/android/quickstep/TouchInteractionService.java
+++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/TouchInteractionService.java
@@ -471,7 +471,6 @@
                 Log.d(TestProtocol.NO_SWIPE_TO_HOME, "TouchInteractionService.onInputEvent:DOWN");
             }
             mDeviceState.setOrientationTransformIfNeeded(event);
-            GestureState newGestureState;
 
             if (mDeviceState.isInSwipeUpTouchRegion(event)) {
                 if (TestProtocol.sDebugTracing) {
@@ -481,35 +480,30 @@
                 // Clone the previous gesture state since onConsumerAboutToBeSwitched might trigger
                 // onConsumerInactive and wipe the previous gesture state
                 GestureState prevGestureState = new GestureState(mGestureState);
-                newGestureState = createGestureState();
+                mGestureState = createGestureState(mGestureState);
                 mConsumer.onConsumerAboutToBeSwitched();
-                mConsumer = newConsumer(prevGestureState, newGestureState, event);
+                mConsumer = newConsumer(prevGestureState, mGestureState, event);
 
                 ActiveGestureLog.INSTANCE.addLog("setInputConsumer: " + mConsumer.getName());
                 mUncheckedConsumer = mConsumer;
             } else if (mDeviceState.isUserUnlocked() && mDeviceState.isFullyGesturalNavMode()) {
-                newGestureState = createGestureState();
-                ActivityManager.RunningTaskInfo runningTask = newGestureState.getRunningTask();
+                mGestureState = createGestureState(mGestureState);
+                ActivityManager.RunningTaskInfo runningTask = mGestureState.getRunningTask();
                 if (mDeviceState.canTriggerAssistantAction(event, runningTask)) {
                     // Do not change mConsumer as if there is an ongoing QuickSwitch gesture, we
                     // should not interrupt it. QuickSwitch assumes that interruption can only
                     // happen if the next gesture is also quick switch.
                     mUncheckedConsumer = new AssistantInputConsumer(
                             this,
-                            newGestureState,
+                            mGestureState,
                             InputConsumer.NO_OP, mInputMonitorCompat,
                             mOverviewComponentObserver.assistantGestureIsConstrained());
                 } else {
-                    newGestureState = DEFAULT_STATE;
                     mUncheckedConsumer = InputConsumer.NO_OP;
                 }
             } else {
-                newGestureState = DEFAULT_STATE;
                 mUncheckedConsumer = InputConsumer.NO_OP;
             }
-
-            // Save the current gesture state
-            mGestureState = newGestureState;
         } else {
             // Other events
             if (mUncheckedConsumer != InputConsumer.NO_OP) {
@@ -543,14 +537,14 @@
         TraceHelper.INSTANCE.endFlagsOverride(traceToken);
     }
 
-    private GestureState createGestureState() {
+    private GestureState createGestureState(GestureState previousGestureState) {
         GestureState gestureState = new GestureState(mOverviewComponentObserver,
                 ActiveGestureLog.INSTANCE.generateAndSetLogId());
         if (mTaskAnimationManager.isRecentsAnimationRunning()) {
-            gestureState.updateRunningTask(mGestureState.getRunningTask());
-            gestureState.updateLastStartedTaskId(mGestureState.getLastStartedTaskId());
+            gestureState.updateRunningTask(previousGestureState.getRunningTask());
+            gestureState.updateLastStartedTaskId(previousGestureState.getLastStartedTaskId());
             gestureState.updatePreviouslyAppearedTaskIds(
-                    mGestureState.getPreviouslyAppearedTaskIds());
+                    previousGestureState.getPreviouslyAppearedTaskIds());
         } else {
             gestureState.updateRunningTask(TraceHelper.whitelistIpcs("getRunningTask.0",
                     () -> mAM.getRunningTask(false /* filterOnlyVisibleRecents */)));
@@ -753,7 +747,7 @@
 
     private void reset() {
         mConsumer = mUncheckedConsumer = mResetGestureInputConsumer;
-        mGestureState = new GestureState();
+        mGestureState = DEFAULT_STATE;
     }
 
     private void preloadOverview(boolean fromInit) {