From 3f52f3fab549de62fbcbb5d7f56abff062fe3fbe Mon Sep 17 00:00:00 2001 From: Merissa Mitchell Date: Tue, 13 May 2025 21:38:33 -0700 Subject: [PATCH] [PiP on Desktop] Disable swipe up PiP if task is freeform Bug: 416766306 Test: atest WMShellUnitTests:com.android.wm.shell.pip2.phone Test: Manual - swipe up after tiling YT with video playing in Desktop, verify PiP is not entered and there is no crash Flag: com.android.window.flags.enable_desktop_windowing_pip Change-Id: Ib8b1fc3979c7e2151e7c7184499334501503afb4 --- .../src/com/android/quickstep/AbsSwipeUpHandler.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java index 53147cada2..86efe9b7ca 100644 --- a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java +++ b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java @@ -16,6 +16,7 @@ package com.android.quickstep; import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME; +import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; import static android.view.Surface.ROTATION_0; import static android.view.Surface.ROTATION_270; import static android.view.Surface.ROTATION_90; @@ -97,6 +98,7 @@ import android.view.ViewTreeObserver.OnScrollChangedListener; import android.view.WindowInsets; import android.view.animation.Interpolator; import android.widget.Toast; +import android.window.DesktopExperienceFlags; import android.window.DesktopModeFlags; import android.window.PictureInPictureSurfaceTransaction; import android.window.TransitionInfo; @@ -1680,11 +1682,17 @@ public abstract class AbsSwipeUpHandler< boolean hasValidLeash = runningTaskTarget != null && runningTaskTarget.leash != null && runningTaskTarget.leash.isValid(); + final boolean swipeUpInDesktopWindowing = + DesktopExperienceFlags.ENABLE_DESKTOP_WINDOWING_PIP.isTrue() + && runningTaskTarget != null + && runningTaskTarget.taskInfo.getWindowingMode() + == WINDOWING_MODE_FREEFORM; boolean appCanEnterPip = !mDeviceState.isPipActive() && hasValidLeash && runningTaskTarget.allowEnterPip && runningTaskTarget.taskInfo.pictureInPictureParams != null - && runningTaskTarget.taskInfo.pictureInPictureParams.isAutoEnterEnabled(); + && runningTaskTarget.taskInfo.pictureInPictureParams.isAutoEnterEnabled() + && !swipeUpInDesktopWindowing; HomeAnimationFactory homeAnimFactory = createHomeAnimationFactory( cookies, duration,