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

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

Merge "Defer starting the recents animation when swiping over back button" into ub-launcher3-master

parents 450d821f d56ac2a8
Loading
Loading
Loading
Loading
+17 −2
Original line number Diff line number Diff line
@@ -23,6 +23,9 @@ import static android.view.MotionEvent.ACTION_UP;
import static android.view.MotionEvent.INVALID_POINTER_ID;

import static com.android.quickstep.RemoteRunnable.executeSafely;
import static com.android.systemui.shared.system.NavigationBarCompat.HIT_TARGET_BACK;
import static com.android.systemui.shared.system.NavigationBarCompat.HIT_TARGET_HOME;
import static com.android.systemui.shared.system.NavigationBarCompat.HIT_TARGET_NONE;

import android.app.ActivityManager.RunningTaskInfo;
import android.app.ActivityOptions;
@@ -52,6 +55,7 @@ import com.android.systemui.shared.recents.ISystemUiProxy;
import com.android.systemui.shared.system.ActivityManagerWrapper;
import com.android.systemui.shared.system.AssistDataReceiver;
import com.android.systemui.shared.system.BackgroundExecutor;
import com.android.systemui.shared.system.NavigationBarCompat.HitTarget;
import com.android.systemui.shared.system.RecentsAnimationControllerCompat;
import com.android.systemui.shared.system.RecentsAnimationListener;
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
@@ -83,6 +87,7 @@ public class OtherActivityTouchConsumer extends ContextWrapper implements TouchC
    private BaseSwipeInteractionHandler mInteractionHandler;
    private int mDisplayRotation;
    private Rect mStableInsets = new Rect();
    private @HitTarget int mDownHitTarget = HIT_TARGET_NONE;

    private VelocityTracker mVelocityTracker;

@@ -98,6 +103,11 @@ public class OtherActivityTouchConsumer extends ContextWrapper implements TouchC
        mMainThreadExecutor = mainThreadExecutor;
    }

    @Override
    public void setDownHitTarget(@HitTarget int downHitTarget) {
        mDownHitTarget = downHitTarget;
    }

    @Override
    public void accept(MotionEvent ev) {
        if (mVelocityTracker == null) {
@@ -112,8 +122,9 @@ public class OtherActivityTouchConsumer extends ContextWrapper implements TouchC
                mTouchSlop = ViewConfiguration.get(this).getScaledTouchSlop();
                mTouchThresholdCrossed = false;

                // Start the window animation on down to give more time for launcher to draw
                if (!isUsingScreenShot()) {
                // Start the window animation on down to give more time for launcher to draw if the
                // user didn't start the gesture over the back button
                if (mDownHitTarget != HIT_TARGET_BACK && !isUsingScreenShot()) {
                    startTouchTrackingForWindowAnimation();
                }

@@ -155,6 +166,10 @@ public class OtherActivityTouchConsumer extends ContextWrapper implements TouchC

                        if (isUsingScreenShot()) {
                            startTouchTrackingForScreenshotAnimation();
                        } else if (mDownHitTarget == HIT_TARGET_BACK) {
                            // If the window animation was deferred on DOWN due to it starting over
                            // the back button, then start it now
                            startTouchTrackingForWindowAnimation();
                        }

                        notifyGestureStarted();
+4 −0
Original line number Diff line number Diff line
@@ -20,6 +20,8 @@ import android.os.Build;
import android.support.annotation.IntDef;
import android.view.MotionEvent;

import com.android.systemui.shared.system.NavigationBarCompat.HitTarget;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.function.Consumer;
@@ -50,6 +52,8 @@ public interface TouchConsumer extends Consumer<MotionEvent> {
        return false;
    }

    default void setDownHitTarget(@HitTarget int downHitTarget) { }

    default void updateTouchTracking(@InteractionType int interactionType) { }

    default void onQuickScrubEnd() { }
+24 −15
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@ import android.os.Build;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.IBinder;
import android.os.RemoteException;
import android.util.Log;
import android.view.Choreographer;
import android.view.MotionEvent;
@@ -52,6 +53,7 @@ import com.android.launcher3.model.ModelPreload;
import com.android.systemui.shared.recents.IOverviewProxy;
import com.android.systemui.shared.recents.ISystemUiProxy;
import com.android.systemui.shared.system.ActivityManagerWrapper;
import com.android.systemui.shared.system.NavigationBarCompat.HitTarget;

/**
 * Service connected by system-UI for handling touch interaction.
@@ -70,6 +72,11 @@ public class TouchInteractionService extends Service {

    private final IBinder mMyBinder = new IOverviewProxy.Stub() {

        @Override
        public void onPreMotionEvent(@HitTarget int downHitTarget) throws RemoteException {
            onBinderPreMotionEvent(downHitTarget);
        }

        @Override
        public void onMotionEvent(MotionEvent ev) {
            onBinderMotionEvent(ev);
@@ -166,8 +173,7 @@ public class TouchInteractionService extends Service {
        return mMyBinder;
    }

    private void onBinderMotionEvent(MotionEvent ev) {
        if (ev.getActionMasked() == ACTION_DOWN) {
    private void onBinderPreMotionEvent(@HitTarget int downHitTarget) {
        mRunningTask = mAM.getRunningTask();

        mCurrentConsumer.reset();
@@ -179,10 +185,13 @@ public class TouchInteractionService extends Service {
            mCurrentConsumer = getOtherActivityConsumer();
        }

        mCurrentConsumer.setDownHitTarget(downHitTarget);
        mEventQueue.setConsumer(mCurrentConsumer);
        mEventQueue.setInterimChoreographer(mCurrentConsumer.shouldUseBackgroundConsumer()
                ? mBackgroundThreadChoreographer : null);
    }

    private void onBinderMotionEvent(MotionEvent ev) {
        mCurrentConsumer.preProcessMotionEvent(ev);
        mEventQueue.queue(ev);
    }