[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
This commit is contained in:
Merissa Mitchell
2025-05-13 21:38:33 -07:00
parent dda022a19b
commit 3f52f3fab5

View File

@@ -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,