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

Commit 63f4599c authored by Perry Wu's avatar Perry Wu Committed by Automerger Merge Worker
Browse files

Merge "Fixes bad PIP state when opening Maps from the lock screen" into...

Merge "Fixes bad PIP state when opening Maps from the lock screen" into udc-dev am: 9dd34997 am: 706b3590 am: 8e942009

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23848628



Change-Id: Icd93f0a4837f6f4f88e7c09409d17510221c7a4e
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 9c02927f 8e942009
Loading
Loading
Loading
Loading
+21 −4
Original line number Diff line number Diff line
@@ -339,20 +339,37 @@ public class PipTransition extends PipTransitionController {
        }
        // This means an expand happened before enter-pip finished and we are now "merging" a
        // no-op transition that happens to match our exit-pip.
        // Or that the keyguard is up and preventing the transition from applying, in which case we
        // want to manually reset pip. (b/283783868)
        boolean cancelled = false;
        if (mPipAnimationController.getCurrentAnimator() != null) {
            mPipAnimationController.getCurrentAnimator().cancel();
            mPipAnimationController.resetAnimatorState();
            cancelled = true;
        }

        // Unset exitTransition AFTER cancel so that finishResize knows we are merging.
        mExitTransition = null;
        if (!cancelled || aborted) return;
        if (!cancelled) return;
        final ActivityManager.RunningTaskInfo taskInfo = mPipOrganizer.getTaskInfo();
        if (taskInfo != null) {
            if (aborted) {
                // keyguard case - the transition got aborted, so we want to reset state and
                // windowing mode before reapplying the resize transaction
                sendOnPipTransitionFinished(TRANSITION_DIRECTION_LEAVE_PIP);
                mPipOrganizer.onExitPipFinished(taskInfo);

                WindowContainerTransaction wct = new WindowContainerTransaction();
                mPipOrganizer.applyWindowingModeChangeOnExit(wct, TRANSITION_DIRECTION_LEAVE_PIP);
                wct.setBounds(taskInfo.token, null);
                mPipOrganizer.applyFinishBoundsResize(wct, TRANSITION_DIRECTION_LEAVE_PIP, false);
            } else {
                // merge case
                startExpandAnimation(taskInfo, mPipOrganizer.getSurfaceControl(),
                        mPipBoundsState.getBounds(), mPipBoundsState.getBounds(),
                        new Rect(mExitDestinationBounds), Surface.ROTATION_0, null /* startT */);
            }
        }
        mExitDestinationBounds.setEmpty();
        mCurrentPipTaskToken = null;
    }
+8 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.wm.shell.startingsurface;

import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED;
import static android.graphics.Color.WHITE;
import static android.os.Trace.TRACE_TAG_WINDOW_MANAGER;
import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING;
@@ -77,6 +78,13 @@ public class TaskSnapshotWindow {
            @NonNull Runnable clearWindowHandler) {
        final ActivityManager.RunningTaskInfo runningTaskInfo = info.taskInfo;
        final int taskId = runningTaskInfo.taskId;

        // if we're in PIP we don't want to create the snapshot
        if (runningTaskInfo.getWindowingMode() == WINDOWING_MODE_PINNED) {
            ProtoLog.v(ShellProtoLogGroup.WM_SHELL_STARTING_WINDOW,
                    "did not create taskSnapshot due to being in PIP");
            return null;
        }
        ProtoLog.v(ShellProtoLogGroup.WM_SHELL_STARTING_WINDOW,
                "create taskSnapshot surface for task: %d", taskId);