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

Commit ff67905f authored by Winson Chung's avatar Winson Chung
Browse files

Revert "Invalidate when switching to new consumer"

This reverts commit 4df3b232
and Id0a6a1c5301c66a515cefcab58b77495081c6190, as we have another
change to try and address the original issue.

Bug: 185909226
Change-Id: Ic2c08833e066090a43b989f2f470de298174e84d
parent b1754bfc
Loading
Loading
Loading
Loading
+21 −43
Original line number Diff line number Diff line
@@ -63,7 +63,6 @@ import android.graphics.Matrix;
import android.graphics.PointF;
import android.graphics.Rect;
import android.os.Build;
import android.os.Handler;
import android.os.IBinder;
import android.os.SystemClock;
import android.view.MotionEvent;
@@ -136,7 +135,6 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
    protected final BaseActivityInterface<S, T> mActivityInterface;
    protected final InputConsumerProxy mInputConsumerProxy;
    protected final ActivityInitListener mActivityInitListener;
    private final Handler mHandler = new Handler();
    // Callbacks to be made once the recents animation starts
    private final ArrayList<Runnable> mRecentsAnimationStartCallbacks = new ArrayList<>();
    private final OnScrollChangedListener mOnRecentsScrollListener = this::onRecentsViewScroll;
@@ -148,9 +146,6 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
    protected Runnable mGestureEndCallback;
    protected MultiStateCallback mStateCallback;
    protected boolean mCanceled;
    // One time flag set when onConsumerAboutToBeSwitched() is called, indicating that certain
    // shared animations should not be canceled when this handler is invalidated
    private boolean mConsumerIsSwitching;
    private boolean mRecentsViewScrollLinked = false;

    private static int getFlagForIndex(int index, String name) {
@@ -1007,14 +1002,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
        animateToProgress(startShift, endShift, duration, interpolator, endTarget, velocity);
    }

    private int getLogGestureTaskIndex(@Nullable TaskView targetTask) {
        return mRecentsView == null || targetTask == null
                ? LOG_NO_OP_PAGE_INDEX
                : mRecentsView.indexOfChild(targetTask);
    }

    private void doLogGesture(GestureEndTarget endTarget, @Nullable TaskView targetTask,
            int pageIndex) {
    private void doLogGesture(GestureEndTarget endTarget, @Nullable TaskView targetTask) {
        StatsLogManager.EventEnum event;
        switch (endTarget) {
            case HOME:
@@ -1043,6 +1031,9 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
            // We probably never received an animation controller, skip logging.
            return;
        }
        int pageIndex = endTarget == LAST_TASK
                ? LOG_NO_OP_PAGE_INDEX
                : mRecentsView.getNextPage();
        // TODO: set correct container using the pageIndex
        logger.log(event);
    }
@@ -1294,19 +1285,19 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
    }

    public void onConsumerAboutToBeSwitched() {
        mConsumerIsSwitching = true;
        if (mActivity != null) {
            // In the off chance that the gesture ends before Launcher is started, we should clear
            // the callback here so that it doesn't update with the wrong state
            mActivity.clearRunOnceOnStartCallback();
            resetLauncherListeners();
        }
        if (mGestureState.getEndTarget() != null && !mGestureState.isRunningAnimationToLauncher()) {
            cancelCurrentAnimation();
        } else {
            mStateCallback.setStateOnUiThread(STATE_FINISH_WITH_NO_END);
        }
            reset();
        }
    }

    public boolean isCanceled() {
        return mCanceled;
@@ -1316,14 +1307,13 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
    private void resumeLastTask() {
        mRecentsAnimationController.finish(false /* toRecents */, null);
        ActiveGestureLog.INSTANCE.addLog("finishRecentsAnimation", false);
        doLogGesture(LAST_TASK, null, getLogGestureTaskIndex(null));
        doLogGesture(LAST_TASK, null);
        reset();
    }

    @UiThread
    private void startNewTask() {
        TaskView taskToLaunch = mRecentsView == null ? null : mRecentsView.getNextPageTaskView();
        int taskPageIndex = getLogGestureTaskIndex(taskToLaunch);
        startNewTask(success -> {
            if (!success) {
                reset();
@@ -1332,7 +1322,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
                endLauncherTransitionController();
                updateSysUiFlags(1 /* windowProgress == overview */);
            }
            doLogGesture(NEW_TASK, taskToLaunch, taskPageIndex);
            doLogGesture(NEW_TASK, taskToLaunch);
        });
    }

@@ -1366,39 +1356,29 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
    }

    private void invalidateHandler() {
        if (!mConsumerIsSwitching) {
        if (!LIVE_TILE.get() || !mActivityInterface.isInLiveTileMode()
                || mGestureState.getEndTarget() != RECENTS) {
            mInputConsumerProxy.destroy();
            mTaskAnimationManager.setLiveTileCleanUpHandler(null);
        }
        mInputConsumerProxy.unregisterCallback();
        endRunningWindowAnim(false /* cancel */);

        if (mGestureEndCallback != null) {
            mGestureEndCallback.run();
        }
        }

        mInputConsumerProxy.unregisterCallback();
        mActivityInitListener.unregister();
        ActivityManagerWrapper.getInstance().unregisterTaskStackListener(mActivityRestartListener);
        mTaskSnapshot = null;
    }

    private void invalidateHandlerWithLauncher() {
        if (!mConsumerIsSwitching) {
        endLauncherTransitionController();
            mRecentsView.onGestureAnimationEnd();
        }

        mRecentsView.removeOnScrollChangedListener(mOnRecentsScrollListener);
        mRecentsView.onGestureAnimationEnd();
        resetLauncherListeners();

        mHandler.post(() -> {
            // Defer clearing the activity since invalidation can happen over multiple callbacks.
            mActivity = null;
            mRecentsView = null;
        });
    }

    private void endLauncherTransitionController() {
@@ -1516,8 +1496,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
                    () -> mStateCallback.setStateOnUiThread(STATE_CURRENT_TASK_FINISHED));
        }
        ActiveGestureLog.INSTANCE.addLog("finishRecentsAnimation", true);
        TaskView taskToLaunch = mRecentsView == null ? null : mRecentsView.getCurrentPageTaskView();
        doLogGesture(HOME, taskToLaunch, getLogGestureTaskIndex(taskToLaunch));
        doLogGesture(HOME, mRecentsView == null ? null : mRecentsView.getCurrentPageTaskView());
    }

    /**
@@ -1548,8 +1527,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
        }

        SystemUiProxy.INSTANCE.get(mContext).onOverviewShown(false, TAG);
        TaskView taskToLaunch = mRecentsView.getCurrentPageTaskView();
        doLogGesture(RECENTS, taskToLaunch, getLogGestureTaskIndex(taskToLaunch));
        doLogGesture(RECENTS, mRecentsView.getCurrentPageTaskView());
        reset();
    }