diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index 96190f2b8b3a2..92e90ae294d12 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -5251,18 +5251,17 @@ class Task extends TaskFragment { // Ensure that we do not trigger entering PiP an activity on the root pinned task. return; } + final boolean isTransient = opts != null && opts.getTransientLaunch(); final Task targetRootTask = toFrontTask != null ? toFrontTask.getRootTask() : toFrontActivity.getRootTask(); - final boolean isTransient = opts != null && opts.getTransientLaunch() - || (targetRootTask != null - && targetRootTask.mTransitionController.isTransientHide(targetRootTask)); + if (targetRootTask != null && (targetRootTask.isActivityTypeAssistant() || isTransient)) { + // Ensure the task/activity being brought forward is not the assistant and is not + // transient. In the case of transient-launch, we want to wait until the end of the + // transition and only allow switch if the transient launch was committed. + return; + } + pipCandidate.supportsEnterPipOnTaskSwitch = true; - // Ensure the task/activity being brought forward is not the assistant and is not transient - // nor transient hide target. In the case of transient-launch, we want to wait until the end - // of the transition and only allow to enter pip on task switch after the transient launch - // was committed. - pipCandidate.supportsEnterPipOnTaskSwitch = targetRootTask == null - || !(targetRootTask.isActivityTypeAssistant() || isTransient); } /** diff --git a/services/core/java/com/android/server/wm/Transition.java b/services/core/java/com/android/server/wm/Transition.java index 8794577675954..a14354041b912 100644 --- a/services/core/java/com/android/server/wm/Transition.java +++ b/services/core/java/com/android/server/wm/Transition.java @@ -1041,10 +1041,6 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener { ar.getTaskFragment().startPausing(false /* uiSleeping */, null /* resuming */, "finishTransition"); } finally { - // Didn't schedule for pip, clear the supportsEnterPipOnTaskSwitch flag. - if (!ar.mPauseSchedulePendingForPip) { - ar.supportsEnterPipOnTaskSwitch = false; - } mController.mAtm.mTaskSupervisor.mUserLeaving = false; } // Return false anyway because there's no guarantee that the app will enter pip.