Revert "Revert^2 "Cancel gestures on launcher destroy""

This reverts commit 377eb4098521a9a41827c47df1ba633bf9bb9748.

Reason for revert: failing tests
Fixes: 266606727
Fixes: 266621449

Change-Id: I61094be02fb73c5ad65ee65be5ed93a3364f37ef
diff --git a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java
index deeb027..e3427b7 100644
--- a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java
+++ b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java
@@ -51,7 +51,6 @@
 import static com.android.quickstep.MultiStateCallback.DEBUG_STATES;
 import static com.android.quickstep.util.ActiveGestureErrorDetector.GestureEvent.CANCEL_RECENTS_ANIMATION;
 import static com.android.quickstep.util.ActiveGestureErrorDetector.GestureEvent.EXPECTING_TASK_APPEARED;
-import static com.android.quickstep.util.ActiveGestureErrorDetector.GestureEvent.LAUNCHER_DESTROYED;
 import static com.android.quickstep.util.ActiveGestureErrorDetector.GestureEvent.ON_SETTLED_ON_END_TARGET;
 import static com.android.quickstep.views.RecentsView.UPDATE_SYSUI_FLAGS_THRESHOLD;
 import static com.android.systemui.shared.system.ActivityManagerWrapper.CLOSE_SYSTEM_WINDOWS_REASON_RECENTS;
@@ -183,7 +182,6 @@
                     if (mActivity != activity) {
                         return;
                     }
-                    handleActivityDestroyed();
                     mRecentsView = null;
                     mActivity = null;
                 }
@@ -464,7 +462,6 @@
         if (mStateCallback.hasStates(STATE_HANDLER_INVALIDATED)) {
             return false;
         }
-        mStateCallback.resumeCallbacks();
 
         T createdActivity = mActivityInterface.getCreatedActivity();
         if (createdActivity != null) {
@@ -534,15 +531,6 @@
         return true;
     }
 
-    private void handleActivityDestroyed() {
-        ActiveGestureLog.INSTANCE.addLog("Launcher activity destroyed", LAUNCHER_DESTROYED);
-        if (mActivityInterface.shouldCancelGestureOnDestroy()) {
-            onGestureCancelled();
-        } else {
-            mStateCallback.pauseCallbacks();
-        }
-    }
-
     /**
      * Return true if the window should be translated horizontally if the recents view scrolls
      */
diff --git a/quickstep/src/com/android/quickstep/BaseActivityInterface.java b/quickstep/src/com/android/quickstep/BaseActivityInterface.java
index 22eaa97..274b686 100644
--- a/quickstep/src/com/android/quickstep/BaseActivityInterface.java
+++ b/quickstep/src/com/android/quickstep/BaseActivityInterface.java
@@ -123,14 +123,6 @@
     public abstract AnimationFactory prepareRecentsUI(RecentsAnimationDeviceState deviceState,
             boolean activityVisible, Consumer<AnimatorControllerWithResistance> callback);
 
-    /**
-     * Returns {@code true} iff an ongoing navigational gesture should be cancelled on activity
-     * destroy. Otherwise, the MultiStateCallbacks will be paused until the activity is recreated.
-     */
-    public boolean shouldCancelGestureOnDestroy() {
-        return true;
-    }
-
     public abstract ActivityInitListener createActivityInitListener(
             Predicate<Boolean> onInitListener);
 
diff --git a/quickstep/src/com/android/quickstep/FallbackActivityInterface.java b/quickstep/src/com/android/quickstep/FallbackActivityInterface.java
index 4cb4665..ae9fb0b 100644
--- a/quickstep/src/com/android/quickstep/FallbackActivityInterface.java
+++ b/quickstep/src/com/android/quickstep/FallbackActivityInterface.java
@@ -88,11 +88,6 @@
     }
 
     @Override
-    public boolean shouldCancelGestureOnDestroy() {
-        return false;
-    }
-
-    @Override
     public ActivityInitListener createActivityInitListener(
             Predicate<Boolean> onInitListener) {
         return new ActivityInitListener<>((activity, alreadyOnHome) ->
diff --git a/quickstep/src/com/android/quickstep/MultiStateCallback.java b/quickstep/src/com/android/quickstep/MultiStateCallback.java
index 6d767ed..a68bea2 100644
--- a/quickstep/src/com/android/quickstep/MultiStateCallback.java
+++ b/quickstep/src/com/android/quickstep/MultiStateCallback.java
@@ -31,7 +31,6 @@
 
 import java.util.ArrayList;
 import java.util.LinkedList;
-import java.util.List;
 import java.util.StringJoiner;
 import java.util.function.Consumer;
 
@@ -53,9 +52,6 @@
 
     private int mState = 0;
 
-    private boolean mCallbacksPaused = false;
-    private final List<Runnable> mPendingCallbacks = new ArrayList<>();
-
     public MultiStateCallback(String[] stateNames) {
         this(stateNames, stateFlag -> null);
     }
@@ -82,24 +78,6 @@
         }
     }
 
-    /** Pauses callbacks. */
-    public void pauseCallbacks() {
-        mCallbacksPaused = true;
-    }
-
-    /** Immediately queues any callbacks that were pending paused. */
-    public void resumeCallbacks() {
-        if (!mCallbacksPaused) {
-            return;
-        }
-        mCallbacksPaused = false;
-        List<Runnable> queuedCallbacks = new ArrayList<>(mPendingCallbacks);
-        mPendingCallbacks.clear();
-        for (Runnable runnable : queuedCallbacks) {
-            runnable.run();
-        }
-    }
-
     /**
      * Adds the provided state flags to the global state and executes any callbacks as a result.
      */
@@ -121,12 +99,7 @@
             if ((mState & state) == state) {
                 LinkedList<Runnable> callbacks = mCallbacks.valueAt(i);
                 while (!callbacks.isEmpty()) {
-                    Runnable cb = callbacks.pollFirst();
-                    if (mCallbacksPaused) {
-                        mPendingCallbacks.add(cb);
-                    } else {
-                        cb.run();
-                    }
+                    callbacks.pollFirst().run();
                 }
             }
         }
@@ -178,11 +151,7 @@
             if (wasOn != isOn) {
                 ArrayList<Consumer<Boolean>> listeners = mStateChangeListeners.valueAt(i);
                 for (Consumer<Boolean> listener : listeners) {
-                    if (mCallbacksPaused) {
-                        mPendingCallbacks.add(() -> listener.accept(isOn));
-                    } else {
-                        listener.accept(isOn);
-                    }
+                    listener.accept(isOn);
                 }
             }
         }
diff --git a/quickstep/src/com/android/quickstep/util/ActiveGestureErrorDetector.java b/quickstep/src/com/android/quickstep/util/ActiveGestureErrorDetector.java
index 0fdd8b5..60065fb 100644
--- a/quickstep/src/com/android/quickstep/util/ActiveGestureErrorDetector.java
+++ b/quickstep/src/com/android/quickstep/util/ActiveGestureErrorDetector.java
@@ -37,7 +37,7 @@
         ON_SETTLED_ON_END_TARGET, START_RECENTS_ANIMATION, FINISH_RECENTS_ANIMATION,
         CANCEL_RECENTS_ANIMATION, SET_ON_PAGE_TRANSITION_END_CALLBACK, CANCEL_CURRENT_ANIMATION,
         CLEANUP_SCREENSHOT, SCROLLER_ANIMATION_ABORTED, TASK_APPEARED, EXPECTING_TASK_APPEARED,
-        FLAG_USING_OTHER_ACTIVITY_INPUT_CONSUMER, LAUNCHER_DESTROYED,
+        FLAG_USING_OTHER_ACTIVITY_INPUT_CONSUMER,
 
         /**
          * These GestureEvents are specifically associated to state flags that get set in
@@ -162,13 +162,6 @@
                                         + "before/without setting end target to new task",
                                 writer);
                         break;
-                    case LAUNCHER_DESTROYED:
-                        errorDetected |= printErrorIfTrue(
-                                true,
-                                prefix,
-                                /* errorMessage= */ "Launcher destroyed mid-gesture",
-                                writer);
-                        break;
                     case STATE_GESTURE_COMPLETED:
                         errorDetected |= printErrorIfTrue(
                                 !encounteredEvents.contains(GestureEvent.MOTION_UP),
diff --git a/quickstep/tests/src/com/android/quickstep/FallbackRecentsTest.java b/quickstep/tests/src/com/android/quickstep/FallbackRecentsTest.java
index a4dbf6a..62d46d3 100644
--- a/quickstep/tests/src/com/android/quickstep/FallbackRecentsTest.java
+++ b/quickstep/tests/src/com/android/quickstep/FallbackRecentsTest.java
@@ -32,6 +32,8 @@
 import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
 import static com.android.launcher3.util.rule.ShellCommandRule.disableHeadsUpNotification;
 import static com.android.launcher3.util.rule.ShellCommandRule.getLauncherCommand;
+import static com.android.launcher3.util.rule.TestStabilityRule.LOCAL;
+import static com.android.launcher3.util.rule.TestStabilityRule.PLATFORM_POSTSUBMIT;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
@@ -59,6 +61,7 @@
 import com.android.launcher3.util.rule.FailureWatcher;
 import com.android.launcher3.util.rule.SamplerRule;
 import com.android.launcher3.util.rule.ScreenRecordRule;
+import com.android.launcher3.util.rule.TestStabilityRule;
 import com.android.quickstep.views.RecentsView;
 
 import org.junit.After;
@@ -168,6 +171,7 @@
 
     // b/143488140
     //@NavigationModeSwitch
+    @TestStabilityRule.Stability(flavors = LOCAL | PLATFORM_POSTSUBMIT) // b/266606727
     @Test
     public void goToOverviewFromHome() {
         mDevice.pressHome();
@@ -215,6 +219,7 @@
 
     // b/143488140
     //@NavigationModeSwitch
+    @TestStabilityRule.Stability(flavors = LOCAL | PLATFORM_POSTSUBMIT) // b/266606727
     @Test
     public void testOverview() {
         startAppFast(getAppPackageName());