From de1edcda5d5efc257115506bd532c52ce7b47dfc Mon Sep 17 00:00:00 2001 From: Ikram Gabiyev Date: Wed, 14 Aug 2024 14:30:54 -0700 Subject: Check if activity entering PiP is a top activity We need to make sure we handle any trampoline activity start cases where, for instance, some Activity A, start another activity B on creation, but then, the activity A calls to enterPictureInPictureMode(). Bug: 359944953 Flag: com.android.wm.shell.enable_pip2_implementation Test: atest PinnedStackTests#testAutoEnterPictureInPictureLaunchActivity Change-Id: Ic3e7db08c8b552e2d83d6edac00035b249e3af85 --- services/core/java/com/android/server/wm/ActivityRecord.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index 5c096ecbba04..5500229af7be 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -3292,6 +3292,12 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A return false; } + // Check if this activity is the top activity of its task - this prevents any trampolines + // followed by enterPictureInPictureMode() calls by an activity from below in its stack. + if (getTask().getTopMostActivity() != this) { + return false; + } + // Check to see if PiP is supported for the display this container is on. if (mDisplayContent != null && !mDisplayContent.mDwpcHelper.isEnteringPipAllowed( getUid())) { -- cgit v1.2.3-59-g8ed1b