Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a5a17bf7 authored by Vania Desmonda's avatar Vania Desmonda Committed by Android (Google) Code Review
Browse files

Merge "Open a Desktop mode app in full screen while split screen is active." into main

parents cf06953c 5bd98c27
Loading
Loading
Loading
Loading
+10 −0
Original line number Original line Diff line number Diff line
@@ -20,6 +20,7 @@ import static android.app.ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOW_A
import static android.app.ActivityTaskManager.INVALID_TASK_ID;
import static android.app.ActivityTaskManager.INVALID_TASK_ID;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS;
import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
import static android.content.Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT;
import static android.content.Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT;
@@ -145,6 +146,7 @@ import com.android.wm.shell.protolog.ShellProtoLogGroup;
import com.android.wm.shell.recents.RecentTasksController;
import com.android.wm.shell.recents.RecentTasksController;
import com.android.wm.shell.shared.TransactionPool;
import com.android.wm.shell.shared.TransactionPool;
import com.android.wm.shell.shared.TransitionUtil;
import com.android.wm.shell.shared.TransitionUtil;
import com.android.wm.shell.shared.desktopmode.DesktopModeStatus;
import com.android.wm.shell.shared.split.SplitBounds;
import com.android.wm.shell.shared.split.SplitBounds;
import com.android.wm.shell.shared.split.SplitScreenConstants.PersistentSnapPosition;
import com.android.wm.shell.shared.split.SplitScreenConstants.PersistentSnapPosition;
import com.android.wm.shell.shared.split.SplitScreenConstants.SplitIndex;
import com.android.wm.shell.shared.split.SplitScreenConstants.SplitIndex;
@@ -2766,6 +2768,8 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
        final @WindowManager.TransitionType int type = request.getType();
        final @WindowManager.TransitionType int type = request.getType();
        final boolean isOpening = isOpeningType(type);
        final boolean isOpening = isOpeningType(type);
        final boolean inFullscreen = triggerTask.getWindowingMode() == WINDOWING_MODE_FULLSCREEN;
        final boolean inFullscreen = triggerTask.getWindowingMode() == WINDOWING_MODE_FULLSCREEN;
        final boolean inDesktopMode = DesktopModeStatus.canEnterDesktopMode(mContext)
                && triggerTask.getWindowingMode() == WINDOWING_MODE_FREEFORM;
        final StageTaskListener stage = getStageOfTask(triggerTask);
        final StageTaskListener stage = getStageOfTask(triggerTask);


        if (isOpening && inFullscreen) {
        if (isOpening && inFullscreen) {
@@ -2820,6 +2824,12 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
                    mSplitTransitions.setDismissTransition(transition, stageType,
                    mSplitTransitions.setDismissTransition(transition, stageType,
                            EXIT_REASON_FULLSCREEN_REQUEST);
                            EXIT_REASON_FULLSCREEN_REQUEST);
                }
                }
            } else if (isOpening && inDesktopMode) {
                // If the app being opened is in Desktop mode, set it to full screen and dismiss
                // split screen stage.
                prepareExitSplitScreen(STAGE_TYPE_UNDEFINED, out);
                out.setWindowingMode(triggerTask.token, WINDOWING_MODE_UNDEFINED)
                        .setBounds(triggerTask.token, null);
            } else if (isOpening && inFullscreen) {
            } else if (isOpening && inFullscreen) {
                final int activityType = triggerTask.getActivityType();
                final int activityType = triggerTask.getActivityType();
                if (activityType == ACTIVITY_TYPE_HOME || activityType == ACTIVITY_TYPE_RECENTS) {
                if (activityType == ACTIVITY_TYPE_HOME || activityType == ACTIVITY_TYPE_RECENTS) {