From 97d56c0663bac761a4edaad95a8bfbf384e68849 Mon Sep 17 00:00:00 2001 From: Chris Li Date: Wed, 28 Apr 2021 16:15:14 -0700 Subject: [PATCH] Determine whether to support activities in multi window (2/n) Replace some existing usages of mSupportsNonResizableMultiWindow with checking supportsMultiWindow() per Task/Activity. This is cleanup before updating supportsMultiWindow(). Bug: 176061101 Test: pass existing Change-Id: I3de46d6ecaae1ad93d031384e9cba6e0e4ebb01d --- .../com/android/server/wm/ActivityClientController.java | 6 +++--- .../core/java/com/android/server/wm/ActivityRecord.java | 3 +-- services/core/java/com/android/server/wm/Task.java | 9 ++++----- .../com/android/server/wm/TaskLaunchParamsModifier.java | 2 +- 4 files changed, 9 insertions(+), 11 deletions(-) diff --git a/services/core/java/com/android/server/wm/ActivityClientController.java b/services/core/java/com/android/server/wm/ActivityClientController.java index efee0a1133b6d..eb9ab3668dac3 100644 --- a/services/core/java/com/android/server/wm/ActivityClientController.java +++ b/services/core/java/com/android/server/wm/ActivityClientController.java @@ -827,9 +827,9 @@ class ActivityClientController extends IActivityClientController.Stub { if (rootTask.inFreeformWindowingMode()) { rootTask.setWindowingMode(WINDOWING_MODE_FULLSCREEN); - } else if (!mService.mSupportsNonResizableMultiWindow && r.inSizeCompatMode()) { - throw new IllegalStateException("Size-compat windows are currently not" - + "freeform-enabled"); + } else if (!r.supportsFreeform()) { + throw new IllegalStateException( + "This activity is currently not freeform-enabled"); } else if (rootTask.getParent().inFreeformWindowingMode()) { // If the window is on a freeform display, set it to undefined. It will be // resolved to freeform and it can adjust windowing mode when the display mode diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index 3e8bc5d31af0f..6957aa0154e13 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -2465,8 +2465,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A if (windowingMode == WINDOWING_MODE_PINNED && info.supportsPictureInPicture()) { return false; } - if (WindowConfiguration.inMultiWindowMode(windowingMode) - && mAtmService.mSupportsNonResizableMultiWindow + if (WindowConfiguration.inMultiWindowMode(windowingMode) && supportsMultiWindow() && !mAtmService.mForceResizableActivities) { // The non resizable app will be letterboxed instead of being forced resizable. return false; diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index 2a0041afd9d0d..10a294625a8bd 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -2836,14 +2836,13 @@ class Task extends WindowContainer { getResolvedOverrideConfiguration().windowConfiguration.setWindowingMode(windowingMode); } - // Do not allow non-resizable tasks to be in a multi-window mode, unless it is in pinned - // windowing mode or supports non-resizable tasks in multi-window mode. - if (!isResizeable()) { + // Do not allow tasks not support multi window to be in a multi-window mode, unless it is in + // pinned windowing mode. + if (!supportsMultiWindow()) { final int candidateWindowingMode = windowingMode != WINDOWING_MODE_UNDEFINED ? windowingMode : parentWindowingMode; if (WindowConfiguration.inMultiWindowMode(candidateWindowingMode) - && candidateWindowingMode != WINDOWING_MODE_PINNED - && !mTaskSupervisor.mService.mSupportsNonResizableMultiWindow) { + && candidateWindowingMode != WINDOWING_MODE_PINNED) { getResolvedOverrideConfiguration().windowConfiguration.setWindowingMode( WINDOWING_MODE_FULLSCREEN); } diff --git a/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java b/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java index 29677b22ea816..0bc799996abb7 100644 --- a/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java +++ b/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java @@ -612,7 +612,7 @@ class TaskLaunchParamsModifier implements LaunchParamsModifier { private boolean shouldLaunchUnresizableAppInFreeform(ActivityRecord activity, TaskDisplayArea displayArea) { - if (!mSupervisor.mService.mSupportsNonResizableMultiWindow || activity.isResizeable()) { + if (!activity.supportsFreeform() || activity.isResizeable()) { return false; }