Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 08007068 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Generalize ActivityTracker to support RecentsWindowManager" into main

parents 8018dcad 8463dc47
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -15,11 +15,11 @@
 */
package com.android.launcher3;

import com.android.quickstep.util.ActivityInitListener;
import com.android.quickstep.util.ContextInitListener;

import java.util.function.BiPredicate;

public class LauncherInitListener extends ActivityInitListener<Launcher> {
public class LauncherInitListener extends ContextInitListener<Launcher> {

    /**
     * @param onInitListener a callback made when the activity is initialized. The callback should
@@ -31,8 +31,8 @@ public class LauncherInitListener extends ActivityInitListener<Launcher> {
    }

    @Override
    public boolean handleInit(Launcher launcher, boolean alreadyOnHome) {
    public boolean handleInit(Launcher launcher, boolean isHomeStarted) {
        launcher.deferOverlayCallbacksUntilNextResumeOrStop();
        return super.handleInit(launcher, alreadyOnHome);
        return super.handleInit(launcher, isHomeStarted);
    }
}
+2 −2
Original line number Diff line number Diff line
@@ -384,7 +384,7 @@ public class DesktopVisibilityController {
            Log.d(TAG, "markLauncherPaused " + Debug.getCaller());
        }
        StatefulActivity<LauncherState> activity =
                QuickstepLauncher.ACTIVITY_TRACKER.getCreatedActivity();
                QuickstepLauncher.ACTIVITY_TRACKER.getCreatedContext();
        if (activity != null) {
            activity.setPaused();
        }
@@ -404,7 +404,7 @@ public class DesktopVisibilityController {
            Log.d(TAG, "markLauncherResumed " + Debug.getCaller());
        }
        StatefulActivity<LauncherState> activity =
                QuickstepLauncher.ACTIVITY_TRACKER.getCreatedActivity();
                QuickstepLauncher.ACTIVITY_TRACKER.getCreatedContext();
        // Check activity state before calling setResumed(). Launcher may have been actually
        // paused (eg fullscreen task moved to front).
        // In this case we should not mark the activity as resumed.
+13 −17
Original line number Diff line number Diff line
@@ -100,7 +100,6 @@ 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;
@@ -125,8 +124,8 @@ import com.android.quickstep.fallback.window.RecentsWindowManager;
import com.android.quickstep.util.ActiveGestureErrorDetector;
import com.android.quickstep.util.ActiveGestureLog;
import com.android.quickstep.util.ActiveGestureProtoLogProxy;
import com.android.quickstep.util.ActivityInitListener;
import com.android.quickstep.util.AnimatorControllerWithResistance;
import com.android.quickstep.util.ContextInitListener;
import com.android.quickstep.util.InputConsumerProxy;
import com.android.quickstep.util.InputProxyHandlerFactory;
import com.android.quickstep.util.MotionPauseDetector;
@@ -156,8 +155,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,6 +164,8 @@ 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.
 */
@@ -184,7 +183,7 @@ public abstract class AbsSwipeUpHandler<

    protected final BaseContainerInterface<STATE, RECENTS_CONTAINER> mContainerInterface;
    protected final InputConsumerProxy mInputConsumerProxy;
    protected final ActivityInitListener mActivityInitListener;
    protected final ContextInitListener mContextInitListener;
    // Callbacks to be made once the recents animation starts
    private final ArrayList<Runnable> mRecentsAnimationStartCallbacks = new ArrayList<>();
    private final OnScrollChangedListener mOnRecentsScrollListener = this::onRecentsViewScroll;
@@ -357,10 +356,7 @@ public abstract class AbsSwipeUpHandler<
            InputConsumerController inputConsumer, RecentsWindowManager recentsWindowManager) {
        super(context, deviceState, gestureState);
        mContainerInterface = gestureState.getContainerInterface();
        if (recentsWindowManager != null && Flags.enableFallbackOverviewInWindow()) {
            recentsWindowManager.registerInitListener(this::onActivityInit);
        }
        mActivityInitListener =
        mContextInitListener =
                mContainerInterface.createActivityInitListener(this::onActivityInit);
        mInputConsumerProxy =
                new InputConsumerProxy(context, /* rotationSupplier = */ () -> {
@@ -482,7 +478,7 @@ public abstract class AbsSwipeUpHandler<
                this::resetStateForAnimationCancel);
    }

    protected boolean onActivityInit(Boolean alreadyOnHome) {
    protected boolean onActivityInit(Boolean isHomeStarted) {
        if (mStateCallback.hasStates(STATE_HANDLER_INVALIDATED)) {
            return false;
        }
@@ -510,11 +506,11 @@ public abstract class AbsSwipeUpHandler<
            initStateCallbacks();
            mStateCallback.setState(oldState);
        }
        mWasLauncherAlreadyVisible = alreadyOnHome;
        mWasLauncherAlreadyVisible = isHomeStarted;
        mContainer = container;
        // Override the visibility of the activity until the gesture actually starts and we swipe
        // up, or until we transition home and the home animation is composed
        if (alreadyOnHome) {
        if (isHomeStarted) {
            mContainer.clearForceInvisibleFlag(STATE_HANDLER_INVISIBILITY_FLAGS);
        } else {
            mContainer.addForceInvisibleFlag(STATE_HANDLER_INVISIBILITY_FLAGS);
@@ -524,7 +520,7 @@ public abstract class AbsSwipeUpHandler<
        mRecentsView.setOnPageTransitionEndCallback(null);

        mStateCallback.setState(STATE_LAUNCHER_PRESENT);
        if (alreadyOnHome) {
        if (isHomeStarted) {
            onLauncherStart();
        } else {
            container.addEventCallback(EVENT_STARTED, mLauncherOnStartCallback);
@@ -985,7 +981,7 @@ public abstract class AbsSwipeUpHandler<
    @Override
    public void onRecentsAnimationCanceled(HashMap<Integer, ThumbnailData> thumbnailDatas) {
        ActiveGestureProtoLogProxy.logAbsSwipeUpHandlerOnRecentsAnimationCanceled();
        mActivityInitListener.unregister("AbsSwipeUpHandler.onRecentsAnimationCanceled");
        mContextInitListener.unregister("AbsSwipeUpHandler.onRecentsAnimationCanceled");
        mStateCallback.setStateOnUiThread(STATE_GESTURE_CANCELLED | STATE_HANDLER_INVALIDATED);
        // Defer clearing the controller and the targets until after we've updated the state
        mRecentsAnimationController = null;
@@ -1989,7 +1985,7 @@ public abstract class AbsSwipeUpHandler<

        // Cleanup when switching handlers
        mInputConsumerProxy.unregisterOnTouchDownCallback();
        mActivityInitListener.unregister("AbsSwipeUpHandler.cancelCurrentAnimation");
        mContextInitListener.unregister("AbsSwipeUpHandler.cancelCurrentAnimation");
        TaskStackChangeListeners.getInstance().unregisterTaskStackListener(
                mActivityRestartListener);
        mTaskSnapshotCache.clear();
@@ -2007,7 +2003,7 @@ public abstract class AbsSwipeUpHandler<
            mGestureEndCallback.run();
        }

        mActivityInitListener.unregister("AbsSwipeUpHandler.invalidateHandler");
        mContextInitListener.unregister("AbsSwipeUpHandler.invalidateHandler");
        TaskStackChangeListeners.getInstance().unregisterTaskStackListener(
                mActivityRestartListener);
        mTaskSnapshotCache.clear();
@@ -2516,7 +2512,7 @@ public abstract class AbsSwipeUpHandler<
        // Preload the plan
        RecentsModel.INSTANCE.get(mContext).getTasks(null);

        mActivityInitListener.register(reasonString);
        mContextInitListener.register(reasonString);
    }

    private boolean shouldFadeOutTargetsForKeyboardQuickSwitch(
+2 −2
Original line number Diff line number Diff line
@@ -47,8 +47,8 @@ import com.android.launcher3.util.DisplayController;
import com.android.launcher3.util.WindowBounds;
import com.android.launcher3.views.ScrimView;
import com.android.quickstep.orientation.RecentsPagedOrientationHandler;
import com.android.quickstep.util.ActivityInitListener;
import com.android.quickstep.util.AnimatorControllerWithResistance;
import com.android.quickstep.util.ContextInitListener;
import com.android.quickstep.views.RecentsView;
import com.android.quickstep.views.RecentsViewContainer;
import com.android.systemui.shared.recents.model.ThumbnailData;
@@ -134,7 +134,7 @@ public abstract class BaseContainerInterface<STATE_TYPE extends BaseState<STATE_
            RecentsAnimationDeviceState deviceState, boolean activityVisible,
            Consumer<AnimatorControllerWithResistance> callback);

    public abstract ActivityInitListener createActivityInitListener(
    public abstract ContextInitListener createActivityInitListener(
            Predicate<Boolean> onInitListener);
    /**
     * Returns the expected STATE_TYPE from the provided GestureEndTarget.
+4 −4
Original line number Diff line number Diff line
@@ -36,8 +36,8 @@ import com.android.launcher3.util.DisplayController;
import com.android.quickstep.GestureState.GestureEndTarget;
import com.android.quickstep.fallback.RecentsState;
import com.android.quickstep.orientation.RecentsPagedOrientationHandler;
import com.android.quickstep.util.ActivityInitListener;
import com.android.quickstep.util.AnimatorControllerWithResistance;
import com.android.quickstep.util.ContextInitListener;
import com.android.quickstep.views.RecentsView;

import java.util.function.Consumer;
@@ -88,16 +88,16 @@ public final class FallbackActivityInterface extends
    }

    @Override
    public ActivityInitListener createActivityInitListener(
    public ContextInitListener<RecentsActivity> createActivityInitListener(
            Predicate<Boolean> onInitListener) {
        return new ActivityInitListener<>((activity, alreadyOnHome) ->
        return new ContextInitListener<>((activity, alreadyOnHome) ->
                onInitListener.test(alreadyOnHome), RecentsActivity.ACTIVITY_TRACKER);
    }

    @Nullable
    @Override
    public RecentsActivity getCreatedContainer() {
        return RecentsActivity.ACTIVITY_TRACKER.getCreatedActivity();
        return RecentsActivity.ACTIVITY_TRACKER.getCreatedContext();
    }

    @Override
Loading