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