From ece659d11a20bbf0474104d3121c54d469ef5507 Mon Sep 17 00:00:00 2001 From: Schneider Victor-tulias Date: Wed, 25 Jan 2023 18:21:08 +0000 Subject: [PATCH] Revert "Revert^2 "Cancel gestures on launcher destroy"" This reverts commit 377eb4098521a9a41827c47df1ba633bf9bb9748. Reason for revert: failing tests Fixes: 266606727 Fixes: 266621449 Change-Id: I61094be02fb73c5ad65ee65be5ed93a3364f37ef --- .../android/quickstep/AbsSwipeUpHandler.java | 12 ------- .../quickstep/BaseActivityInterface.java | 8 ----- .../quickstep/FallbackActivityInterface.java | 5 --- .../android/quickstep/MultiStateCallback.java | 35 ++----------------- .../util/ActiveGestureErrorDetector.java | 9 +---- .../quickstep/FallbackRecentsTest.java | 5 +++ 6 files changed, 8 insertions(+), 66 deletions(-) diff --git a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java index deeb02757d..e3427b7087 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.GestureState.STATE_RECENTS_SCROLLING_FINISHE 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 @@ public abstract class AbsSwipeUpHandler, if (mActivity != activity) { return; } - handleActivityDestroyed(); mRecentsView = null; mActivity = null; } @@ -464,7 +462,6 @@ public abstract class AbsSwipeUpHandler, if (mStateCallback.hasStates(STATE_HANDLER_INVALIDATED)) { return false; } - mStateCallback.resumeCallbacks(); T createdActivity = mActivityInterface.getCreatedActivity(); if (createdActivity != null) { @@ -534,15 +531,6 @@ public abstract class AbsSwipeUpHandler, 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 22eaa972c3..274b686ea4 100644 --- a/quickstep/src/com/android/quickstep/BaseActivityInterface.java +++ b/quickstep/src/com/android/quickstep/BaseActivityInterface.java @@ -123,14 +123,6 @@ public abstract class BaseActivityInterface 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 onInitListener); diff --git a/quickstep/src/com/android/quickstep/FallbackActivityInterface.java b/quickstep/src/com/android/quickstep/FallbackActivityInterface.java index 4cb4665d54..ae9fb0b385 100644 --- a/quickstep/src/com/android/quickstep/FallbackActivityInterface.java +++ b/quickstep/src/com/android/quickstep/FallbackActivityInterface.java @@ -87,11 +87,6 @@ public final class FallbackActivityInterface extends return factory; } - @Override - public boolean shouldCancelGestureOnDestroy() { - return false; - } - @Override public ActivityInitListener createActivityInitListener( Predicate onInitListener) { diff --git a/quickstep/src/com/android/quickstep/MultiStateCallback.java b/quickstep/src/com/android/quickstep/MultiStateCallback.java index 6d767ed92e..a68bea2cc0 100644 --- a/quickstep/src/com/android/quickstep/MultiStateCallback.java +++ b/quickstep/src/com/android/quickstep/MultiStateCallback.java @@ -31,7 +31,6 @@ import com.android.quickstep.util.ActiveGestureLog; 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 @@ public class MultiStateCallback { private int mState = 0; - private boolean mCallbacksPaused = false; - private final List mPendingCallbacks = new ArrayList<>(); - public MultiStateCallback(String[] stateNames) { this(stateNames, stateFlag -> null); } @@ -82,24 +78,6 @@ public class MultiStateCallback { } } - /** Pauses callbacks. */ - public void pauseCallbacks() { - mCallbacksPaused = true; - } - - /** Immediately queues any callbacks that were pending paused. */ - public void resumeCallbacks() { - if (!mCallbacksPaused) { - return; - } - mCallbacksPaused = false; - List 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 @@ public class MultiStateCallback { if ((mState & state) == state) { LinkedList 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 @@ public class MultiStateCallback { if (wasOn != isOn) { ArrayList> listeners = mStateChangeListeners.valueAt(i); for (Consumer 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 0fdd8b5e36..60065fb16c 100644 --- a/quickstep/src/com/android/quickstep/util/ActiveGestureErrorDetector.java +++ b/quickstep/src/com/android/quickstep/util/ActiveGestureErrorDetector.java @@ -37,7 +37,7 @@ public class ActiveGestureErrorDetector { 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 @@ public class ActiveGestureErrorDetector { + "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 a4dbf6ade6..62d46d3d8e 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.ui.TaplTestsLauncher3.getAppPackageName; 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.Wait; 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 @@ public class FallbackRecentsTest { // b/143488140 //@NavigationModeSwitch + @TestStabilityRule.Stability(flavors = LOCAL | PLATFORM_POSTSUBMIT) // b/266606727 @Test public void goToOverviewFromHome() { mDevice.pressHome(); @@ -215,6 +219,7 @@ public class FallbackRecentsTest { // b/143488140 //@NavigationModeSwitch + @TestStabilityRule.Stability(flavors = LOCAL | PLATFORM_POSTSUBMIT) // b/266606727 @Test public void testOverview() { startAppFast(getAppPackageName());