Do not auto-pip on launching translucent activity

Note we only prevent Activity from auto-pip in this case. Launching a
translucent Activity still sets ActivityTaskSupervisor#mUserLeaving to
be true and a non-auto-pip Activity will request to enter PiP when they
receive the onUserLeaveHint callback.

Bug: 245735998
Test: `adb shell am start -n <translucent-activity>` over YT
Test: atest PinnedStackTests
Change-Id: Iee4dc55592d3e9851174d18759917dd14f5c0071
This commit is contained in:
Hongwei Wang
2022-09-14 16:02:44 -07:00
parent 390a963bd2
commit 7c288db535

View File

@@ -1595,12 +1595,14 @@ class TaskFragment extends WindowContainer<WindowContainer> {
boolean pauseImmediately = false;
boolean shouldAutoPip = false;
if (resuming != null) {
// We do not want to trigger auto-PiP upon launch of a translucent activity.
final boolean resumingOccludesParent = resuming.occludesParent();
// Resuming the new resume activity only if the previous activity can't go into Pip
// since we want to give Pip activities a chance to enter Pip before resuming the
// next activity.
final boolean lastResumedCanPip = prev.checkEnterPictureInPictureState(
"shouldAutoPipWhilePausing", userLeaving);
if (userLeaving && lastResumedCanPip
if (userLeaving && resumingOccludesParent && lastResumedCanPip
&& prev.pictureInPictureArgs.isAutoEnterEnabled()) {
shouldAutoPip = true;
} else if (!lastResumedCanPip) {