From c50aa8bf31342d29157874c364df462650aba091 Mon Sep 17 00:00:00 2001 From: randypfohl Date: Thu, 1 Aug 2024 15:24:26 -0700 Subject: [PATCH] Limited recents in window introductory cl Test: Built and tested locally Flag: com.android.launcher3.enable_fallback_overview_in_window Bug:292269949 Change-Id: I5352ba0b6c5bc196fbd1322d435a7e27e884f7b5 --- .../android/quickstep/AbsSwipeUpHandler.java | 29 +- .../quickstep/BaseActivityInterface.java | 50 +- .../quickstep/BaseContainerInterface.java | 58 ++- .../quickstep/BaseWindowInterface.java | 259 ++++++++++ .../quickstep/FallbackWindowInterface.java | 31 +- .../com/android/quickstep/GestureState.java | 5 +- .../quickstep/OverviewComponentObserver.java | 7 +- .../android/quickstep/RecentsActivity.java | 1 - .../quickstep/TaskAnimationManager.java | 68 ++- .../android/quickstep/TaskOverlayFactory.java | 5 +- .../com/android/quickstep/TaskViewUtils.java | 16 +- .../quickstep/TouchInteractionService.java | 26 +- .../fallback/FallbackRecentsView.java | 15 +- .../fallback/window/RecentsWindowContext.kt | 99 ++++ .../fallback/window/RecentsWindowManager.kt | 381 +++++++++++++++ .../window/RecentsWindowSwipeHandler.java | 451 ++++++++++++++++++ .../OtherActivityInputConsumer.java | 6 +- .../inputconsumers/OverviewInputConsumer.java | 4 +- .../quickstep/views/DigitalWellBeingToast.kt | 34 +- .../android/quickstep/views/RecentsView.java | 7 +- .../quickstep/views/RecentsViewContainer.java | 8 +- .../quickstep/AbsSwipeUpHandlerTestCase.java | 12 +- .../quickstep/TaskAnimationManagerTest.java | 7 +- src/com/android/launcher3/BaseActivity.java | 2 +- .../statemanager/StatefulContainer.java | 2 - .../launcher3/util/SystemUiController.java | 13 +- .../launcher3/views/ActivityContext.java | 11 +- .../launcher3/util/SystemUiControllerTest.kt | 2 +- 28 files changed, 1430 insertions(+), 179 deletions(-) create mode 100644 quickstep/src/com/android/quickstep/BaseWindowInterface.java create mode 100644 quickstep/src/com/android/quickstep/fallback/window/RecentsWindowContext.kt create mode 100644 quickstep/src/com/android/quickstep/fallback/window/RecentsWindowManager.kt create mode 100644 quickstep/src/com/android/quickstep/fallback/window/RecentsWindowSwipeHandler.java diff --git a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java index a6d651c951..22174dfa0c 100644 --- a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java +++ b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java @@ -45,6 +45,7 @@ import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR; import static com.android.launcher3.util.SystemUiController.UI_STATE_FULLSCREEN_TASK; import static com.android.launcher3.util.VibratorWrapper.OVERVIEW_HAPTIC; import static com.android.launcher3.util.window.RefreshRateTracker.getSingleFrameMs; +import static com.android.quickstep.BaseContainerInterface.AnimationFactory; import static com.android.quickstep.GestureState.GestureEndTarget.HOME; import static com.android.quickstep.GestureState.GestureEndTarget.LAST_TASK; import static com.android.quickstep.GestureState.GestureEndTarget.NEW_TASK; @@ -103,6 +104,7 @@ import com.android.internal.jank.Cuj; import com.android.internal.util.LatencyTracker; import com.android.launcher3.AbstractFloatingView; import com.android.launcher3.DeviceProfile; +import com.android.launcher3.Flags; import com.android.launcher3.R; import com.android.launcher3.Utilities; import com.android.launcher3.anim.AnimationSuccessListener; @@ -112,6 +114,7 @@ import com.android.launcher3.dragndrop.DragView; import com.android.launcher3.logging.StatsLogManager; import com.android.launcher3.logging.StatsLogManager.StatsLogger; import com.android.launcher3.statemanager.BaseState; +import com.android.launcher3.statemanager.StatefulContainer; import com.android.launcher3.taskbar.TaskbarThresholdUtils; import com.android.launcher3.taskbar.TaskbarUIController; import com.android.launcher3.uioverrides.QuickstepLauncher; @@ -120,9 +123,9 @@ import com.android.launcher3.util.SafeCloseable; import com.android.launcher3.util.TraceHelper; import com.android.launcher3.util.VibratorWrapper; import com.android.launcher3.util.WindowBounds; -import com.android.quickstep.BaseActivityInterface.AnimationFactory; import com.android.quickstep.GestureState.GestureEndTarget; import com.android.quickstep.RemoteTargetGluer.RemoteTargetHandle; +import com.android.quickstep.fallback.window.RecentsWindowManager; import com.android.quickstep.util.ActiveGestureErrorDetector; import com.android.quickstep.util.ActiveGestureLog; import com.android.quickstep.util.ActivityInitListener; @@ -156,8 +159,6 @@ import com.android.wm.shell.shared.TransactionPool; import com.android.wm.shell.shared.desktopmode.DesktopModeStatus; import com.android.wm.shell.shared.startingsurface.SplashScreenExitAnimationUtils; -import kotlin.Unit; - import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -167,15 +168,16 @@ import java.util.Optional; import java.util.OptionalInt; import java.util.function.Consumer; +import kotlin.Unit; + /** * Handles the navigation gestures when Launcher is the default home activity. */ public abstract class AbsSwipeUpHandler< - RECENTS_CONTAINER extends Context & RecentsViewContainer, - RECENTS_VIEW extends RecentsView, - STATE extends BaseState> - extends SwipeUpAnimationLogic - implements OnApplyWindowInsetsListener, RecentsAnimationCallbacks.RecentsAnimationListener { + RECENTS_CONTAINER extends Context & RecentsViewContainer & StatefulContainer, + RECENTS_VIEW extends RecentsView, STATE extends BaseState> + extends SwipeUpAnimationLogic implements OnApplyWindowInsetsListener, + RecentsAnimationCallbacks.RecentsAnimationListener { private static final String TAG = "AbsSwipeUpHandler"; private static final ArrayList STATE_NAMES = new ArrayList<>(); @@ -356,6 +358,10 @@ public abstract class AbsSwipeUpHandler< InputConsumerController inputConsumer) { super(context, deviceState, gestureState); mContainerInterface = gestureState.getContainerInterface(); + if (Flags.enableFallbackOverviewInWindow()) { + RecentsWindowManager.Companion.getInstanceOrNull() + .registerInitListener(this::onActivityInit); + } mActivityInitListener = mContainerInterface.createActivityInitListener(this::onActivityInit); mInputConsumerProxy = @@ -819,7 +825,7 @@ public abstract class AbsSwipeUpHandler< return; } initTransitionEndpoints(mContainer.getDeviceProfile()); - mAnimationFactory.createActivityInterface(mTransitionDragLength); + mAnimationFactory.createContainerInterface(mTransitionDragLength); } /** @@ -863,10 +869,13 @@ public abstract class AbsSwipeUpHandler< } } + public Intent getHomeIntent() { + return mGestureState.getHomeIntent(); + } + public Intent getLaunchIntent() { return mGestureState.getOverviewIntent(); } - /** * Called when the value of {@link #mCurrentShift} changes */ diff --git a/quickstep/src/com/android/quickstep/BaseActivityInterface.java b/quickstep/src/com/android/quickstep/BaseActivityInterface.java index 91379b1c23..1e755eb220 100644 --- a/quickstep/src/com/android/quickstep/BaseActivityInterface.java +++ b/quickstep/src/com/android/quickstep/BaseActivityInterface.java @@ -61,17 +61,14 @@ import java.util.function.Consumer; public abstract class BaseActivityInterface, ACTIVITY_TYPE extends StatefulActivity & RecentsViewContainer> extends BaseContainerInterface { - private final STATE_TYPE mBackgroundState; private STATE_TYPE mTargetState; - @Nullable private Runnable mOnInitBackgroundStateUICallback = null; - protected BaseActivityInterface(boolean rotationSupportedByActivity, STATE_TYPE overviewState, STATE_TYPE backgroundState) { + super(backgroundState); this.rotationSupportedByActivity = rotationSupportedByActivity; mTargetState = overviewState; - mBackgroundState = backgroundState; } /** @@ -155,49 +152,6 @@ public abstract class BaseActivityInterface