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

Commit 328079de authored by Chris Li's avatar Chris Li Committed by Android (Google) Code Review
Browse files

Merge "Determine whether to support activities in multi window (1/n)" into sc-dev

parents c09a6571 cde27168
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -1947,8 +1947,9 @@ public class ActivityManager {
            pw.print(((baseIntent.getFlags() & FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS) != 0));
            pw.print(" activityType="); pw.print(activityTypeToString(getActivityType()));
            pw.print(" windowingMode="); pw.print(windowingModeToString(getWindowingMode()));
            pw.print(" supportsSplitScreenMultiWindow=");
            pw.println(supportsSplitScreenMultiWindow);
            pw.print(" supportsSplitScreenMultiWindow="); pw.print(supportsSplitScreenMultiWindow);
            pw.print(" supportsMultiWindow=");
            pw.println(supportsMultiWindow);
            if (taskDescription != null) {
                pw.print("   ");
                final ActivityManager.TaskDescription td = taskDescription;
+0 −14
Original line number Diff line number Diff line
@@ -348,20 +348,6 @@ public class ActivityTaskManager {
        }
    }

    /**
     * Whether to allow non-resizable apps to be shown in multi-window. The app will be letterboxed
     * if the request orientation is not met, and will be shown in size-compat mode if the container
     * size has changed.
     * @hide
     */
    public static boolean supportsNonResizableMultiWindow() {
        try {
            return ActivityTaskManager.getService().supportsNonResizableMultiWindow();
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
    }

    /**
     * @return whether the UI mode of the given config supports error dialogs (ANR, crash, etc).
     * @hide
+0 −7
Original line number Diff line number Diff line
@@ -259,13 +259,6 @@ interface IActivityTaskManager {
    void setSplitScreenResizing(boolean resizing);
    boolean supportsLocalVoiceInteraction();

    /**
     * Whether to allow non-resizable apps to be shown in multi-window. The app will be letterboxed
     * if the request orientation is not met, and will be shown in size-compat mode if the container
     * size has changed.
     */
    boolean supportsNonResizableMultiWindow();

    // Get device configuration
    ConfigurationInfo getDeviceConfigurationInfo();

+11 −0
Original line number Diff line number Diff line
@@ -137,6 +137,13 @@ public class TaskInfo {
    @UnsupportedAppUsage
    public boolean supportsSplitScreenMultiWindow;

    /**
     * Whether this task supports multi windowing modes based on the device settings and the
     * root activity resizability and configuration.
     * @hide
     */
    public boolean supportsMultiWindow;

    /**
     * The resize mode of the task. See {@link ActivityInfo#resizeMode}.
     * @hide
@@ -329,6 +336,7 @@ public class TaskInfo {
        }
        return topActivityType == that.topActivityType
                && isResizeable == that.isResizeable
                && supportsMultiWindow == that.supportsMultiWindow
                && Objects.equals(positionInParent, that.positionInParent)
                && Objects.equals(pictureInPictureParams, that.pictureInPictureParams)
                && getWindowingMode() == that.getWindowingMode()
@@ -375,6 +383,7 @@ public class TaskInfo {

        taskDescription = source.readTypedObject(ActivityManager.TaskDescription.CREATOR);
        supportsSplitScreenMultiWindow = source.readBoolean();
        supportsMultiWindow = source.readBoolean();
        resizeMode = source.readInt();
        configuration.readFromParcel(source);
        token = WindowContainerToken.CREATOR.createFromParcel(source);
@@ -412,6 +421,7 @@ public class TaskInfo {

        dest.writeTypedObject(taskDescription, flags);
        dest.writeBoolean(supportsSplitScreenMultiWindow);
        dest.writeBoolean(supportsMultiWindow);
        dest.writeInt(resizeMode);
        configuration.writeToParcel(dest, flags);
        token.writeToParcel(dest, flags);
@@ -440,6 +450,7 @@ public class TaskInfo {
                + " numActivities=" + numActivities
                + " lastActiveTime=" + lastActiveTime
                + " supportsSplitScreenMultiWindow=" + supportsSplitScreenMultiWindow
                + " supportsMultiWindow=" + supportsMultiWindow
                + " resizeMode=" + resizeMode
                + " isResizeable=" + isResizeable
                + " token=" + token
+4 −5
Original line number Diff line number Diff line
@@ -23,7 +23,6 @@ import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
import static com.android.wm.shell.protolog.ShellProtoLogGroup.WM_SHELL_TASK_ORG;

import android.app.ActivityManager;
import android.app.ActivityTaskManager;
import android.graphics.Rect;
import android.view.SurfaceControl;
import android.window.WindowContainerToken;
@@ -89,11 +88,11 @@ class AppPair implements ShellTaskOrganizer.TaskListener, SplitLayout.LayoutChan
        ProtoLog.v(WM_SHELL_TASK_ORG, "pair task1=%d task2=%d in AppPair=%s",
                task1.taskId, task2.taskId, this);

        if ((!task1.isResizeable || !task2.isResizeable)
                && !ActivityTaskManager.supportsNonResizableMultiWindow()) {
        if (!task1.supportsMultiWindow || !task2.supportsMultiWindow) {
            ProtoLog.e(WM_SHELL_TASK_ORG,
                    "Can't pair unresizeable tasks task1.isResizeable=%b task1.isResizeable=%b",
                    task1.isResizeable, task2.isResizeable);
                    "Can't pair tasks that doesn't support multi window, "
                            + "task1.supportsMultiWindow=%b, task2.supportsMultiWindow=%b",
                    task1.supportsMultiWindow, task2.supportsMultiWindow);
            return false;
        }

Loading