Merge "Fix swipe-to-home not enter pip from split properly" into udc-dev am: 66204956db am: 6a72e5218b
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23674403 Change-Id: I6cca69ad6ec3e6e808240685ecb9943a191a1567 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -364,6 +364,27 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
|
|||||||
return mMainStage.isActive();
|
return mMainStage.isActive();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @return whether the transition-request implies entering pip from split. */
|
||||||
|
public boolean requestImpliesSplitToPip(TransitionRequestInfo request) {
|
||||||
|
if (!isSplitActive() || !mMixedHandler.requestHasPipEnter(request)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (request.getTriggerTask() != null && getSplitPosition(
|
||||||
|
request.getTriggerTask().taskId) != SPLIT_POSITION_UNDEFINED) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If one of the splitting tasks support auto-pip, wm-core might reparent the task to TDA
|
||||||
|
// and file a TRANSIT_PIP transition when finishing transitions.
|
||||||
|
// @see com.android.server.wm.RootWindowContainer#moveActivityToPinnedRootTask
|
||||||
|
if (mMainStage.getChildCount() == 0 || mSideStage.getChildCount() == 0) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/** Checks if `transition` is a pending enter-split transition. */
|
/** Checks if `transition` is a pending enter-split transition. */
|
||||||
public boolean isPendingEnter(IBinder transition) {
|
public boolean isPendingEnter(IBinder transition) {
|
||||||
return mSplitTransitions.isPendingEnter(transition);
|
return mSplitTransitions.isPendingEnter(transition);
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ import static android.view.WindowManager.TRANSIT_TO_BACK;
|
|||||||
import static android.window.TransitionInfo.FLAG_IS_WALLPAPER;
|
import static android.window.TransitionInfo.FLAG_IS_WALLPAPER;
|
||||||
|
|
||||||
import static com.android.wm.shell.common.split.SplitScreenConstants.FLAG_IS_DIVIDER_BAR;
|
import static com.android.wm.shell.common.split.SplitScreenConstants.FLAG_IS_DIVIDER_BAR;
|
||||||
import static com.android.wm.shell.common.split.SplitScreenConstants.SPLIT_POSITION_UNDEFINED;
|
|
||||||
import static com.android.wm.shell.splitscreen.SplitScreen.STAGE_TYPE_UNDEFINED;
|
import static com.android.wm.shell.splitscreen.SplitScreen.STAGE_TYPE_UNDEFINED;
|
||||||
import static com.android.wm.shell.splitscreen.SplitScreenController.EXIT_REASON_CHILD_TASK_ENTER_PIP;
|
import static com.android.wm.shell.splitscreen.SplitScreenController.EXIT_REASON_CHILD_TASK_ENTER_PIP;
|
||||||
import static com.android.wm.shell.util.TransitionUtil.isOpeningType;
|
import static com.android.wm.shell.util.TransitionUtil.isOpeningType;
|
||||||
@@ -33,7 +32,6 @@ import android.annotation.NonNull;
|
|||||||
import android.annotation.Nullable;
|
import android.annotation.Nullable;
|
||||||
import android.app.PendingIntent;
|
import android.app.PendingIntent;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
import android.util.Log;
|
|
||||||
import android.util.Pair;
|
import android.util.Pair;
|
||||||
import android.view.SurfaceControl;
|
import android.view.SurfaceControl;
|
||||||
import android.view.WindowManager;
|
import android.view.WindowManager;
|
||||||
@@ -161,9 +159,7 @@ public class DefaultMixedHandler implements Transitions.TransitionHandler,
|
|||||||
@Override
|
@Override
|
||||||
public WindowContainerTransaction handleRequest(@NonNull IBinder transition,
|
public WindowContainerTransaction handleRequest(@NonNull IBinder transition,
|
||||||
@NonNull TransitionRequestInfo request) {
|
@NonNull TransitionRequestInfo request) {
|
||||||
if (mPipHandler.requestHasPipEnter(request) && mSplitHandler.isSplitActive()
|
if (mSplitHandler.requestImpliesSplitToPip(request)) {
|
||||||
&& request.getTriggerTask() != null && mSplitHandler.getSplitItemPosition(
|
|
||||||
request.getTriggerTask().token) != SPLIT_POSITION_UNDEFINED) {
|
|
||||||
ProtoLog.v(ShellProtoLogGroup.WM_SHELL_TRANSITIONS, " Got a PiP-enter request while "
|
ProtoLog.v(ShellProtoLogGroup.WM_SHELL_TRANSITIONS, " Got a PiP-enter request while "
|
||||||
+ "Split-Screen is active, so treat it as Mixed.");
|
+ "Split-Screen is active, so treat it as Mixed.");
|
||||||
if (request.getRemoteTransition() != null) {
|
if (request.getRemoteTransition() != null) {
|
||||||
@@ -606,6 +602,11 @@ public class DefaultMixedHandler implements Transitions.TransitionHandler,
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @return whether the transition-request represents a pip-entry. */
|
||||||
|
public boolean requestHasPipEnter(TransitionRequestInfo request) {
|
||||||
|
return mPipHandler.requestHasPipEnter(request);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void mergeAnimation(@NonNull IBinder transition, @NonNull TransitionInfo info,
|
public void mergeAnimation(@NonNull IBinder transition, @NonNull TransitionInfo info,
|
||||||
@NonNull SurfaceControl.Transaction t, @NonNull IBinder mergeTarget,
|
@NonNull SurfaceControl.Transaction t, @NonNull IBinder mergeTarget,
|
||||||
|
|||||||
Reference in New Issue
Block a user