Merge "Allow other app enter PiP when exiting current one" into tm-qpr-dev am: 8df0cf455b am: 62a5b94463
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/19484979
Change-Id: I134d9c1adf8c772c418f36502b91b514ceade476
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java
index 297c79e..f170e77 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java
@@ -966,7 +966,7 @@
// Re-set the PIP bounds to none.
mPipBoundsState.setBounds(new Rect());
mPipUiEventLoggerLogger.setTaskInfo(null);
- mMainExecutor.executeDelayed(() -> mPipMenuController.detach(), 0);
+ mPipMenuController.detach();
mLeash = null;
if (info.displayId != Display.DEFAULT_DISPLAY && mOnDisplayIdChangeCallback != null) {
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java
index a9d5c69..728102e 100644
--- a/services/core/java/com/android/server/wm/Task.java
+++ b/services/core/java/com/android/server/wm/Task.java
@@ -4459,6 +4459,14 @@
// transferring the transform on the leash to the task, reset this state once we're
// moving out of pip
setCanAffectSystemUiFlags(true);
+ // Turn on userLeaveHint so other app can enter PiP mode.
+ mTaskSupervisor.mUserLeaving = true;
+ // Allow entering PiP from current top most activity when we are leaving PiP.
+ final Task topFocused = mRootWindowContainer.getTopDisplayFocusedRootTask();
+ if (topFocused != null) {
+ final ActivityRecord ar = topFocused.getTopResumedActivity();
+ enableEnterPipOnTaskSwitch(ar, null /* toFrontTask */, ar, null /* opts */);
+ }
mRootWindowContainer.notifyActivityPipModeChanged(this, null);
}
if (likelyResolvedMode == WINDOWING_MODE_PINNED) {