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

Commit 5300fce9 authored by Winson Chung's avatar Winson Chung
Browse files

Don't use icon home animator when entering PIP

- If the app supports pip, can just do the fallback workspace
  home animation since the app will not be going to the icon

Bug: 190464560
Test: Open YT, swipe up, ensure it goes to the icon,
      Reopen YT video, swipe up, ensure it goes into PIP without
      icon animation
Change-Id: Ic22ccf17c664b9941ed944c0e39dc1f8d4efa84a
parent f2ec2032
Loading
Loading
Loading
Loading
+6 −5
Original line number Diff line number Diff line
@@ -1072,7 +1072,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,

    protected abstract HomeAnimationFactory createHomeAnimationFactory(
            ArrayList<IBinder> launchCookies, long duration, boolean isTargetTranslucent,
            RemoteAnimationTargetCompat runningTaskTarget);
            boolean appCanEnterPip, RemoteAnimationTargetCompat runningTaskTarget);

    private final TaskStackChangeListener mActivityRestartListener = new TaskStackChangeListener() {
        @Override
@@ -1117,13 +1117,14 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
                    ? runningTaskTarget.taskInfo.launchCookies
                    : new ArrayList<>();
            boolean isTranslucent = runningTaskTarget != null && runningTaskTarget.isTranslucent;
            HomeAnimationFactory homeAnimFactory =
                    createHomeAnimationFactory(cookies, duration, isTranslucent, runningTaskTarget);
            mIsSwipingPipToHome = homeAnimFactory.supportSwipePipToHome()
                    && runningTaskTarget != null
            boolean appCanEnterPip = runningTaskTarget != null
                    && runningTaskTarget.taskInfo.pictureInPictureParams != null
                    && TaskInfoCompat.isAutoEnterPipEnabled(
                            runningTaskTarget.taskInfo.pictureInPictureParams);
            HomeAnimationFactory homeAnimFactory =
                    createHomeAnimationFactory(cookies, duration, isTranslucent, appCanEnterPip,
                            runningTaskTarget);
            mIsSwipingPipToHome = homeAnimFactory.supportSwipePipToHome() && appCanEnterPip;
            if (mIsSwipingPipToHome) {
                mSwipePipToHomeAnimator = getSwipePipToHomeAnimator(
                        homeAnimFactory, runningTaskTarget, start);
+1 −1
Original line number Diff line number Diff line
@@ -129,7 +129,7 @@ public class FallbackSwipeHandler extends

    @Override
    protected HomeAnimationFactory createHomeAnimationFactory(ArrayList<IBinder> launchCookies,
            long duration, boolean isTargetTranslucent,
            long duration, boolean isTargetTranslucent, boolean appCanEnterPip,
            RemoteAnimationTargetCompat runningTaskTarget) {
        mActiveAnimationFactory = new FallbackHomeAnimationFactory(duration);
        ActivityOptions options = ActivityOptions.makeCustomAnimation(mContext, 0, 0);
+2 −2
Original line number Diff line number Diff line
@@ -88,7 +88,7 @@ public class LauncherSwipeHandlerV2 extends

    @Override
    protected HomeAnimationFactory createHomeAnimationFactory(ArrayList<IBinder> launchCookies,
            long duration, boolean isTargetTranslucent,
            long duration, boolean isTargetTranslucent, boolean appCanEnterPip,
            RemoteAnimationTargetCompat runningTaskTarget) {
        if (mActivity == null) {
            mStateCallback.addChangeListener(STATE_LAUNCHER_PRESENT | STATE_HANDLER_INVALIDATED,
@@ -108,7 +108,7 @@ public class LauncherSwipeHandlerV2 extends
        mActivity.getRootView().setForceHideBackArrow(true);
        mActivity.setHintUserWillBeActive();

        if (!canUseWorkspaceView) {
        if (!canUseWorkspaceView || appCanEnterPip) {
            return new LauncherHomeAnimationFactory();
        }
        if (workspaceView instanceof LauncherAppWidgetHostView) {