diff options
| author | 2023-11-09 17:18:23 +0900 | |
|---|---|---|
| committer | 2023-11-09 17:59:29 +0900 | |
| commit | 2970ffce18fa567ea429f1a94dbbc4db616d42a8 (patch) | |
| tree | f0d062f31f00732cea5024159025346d5bd54398 | |
| parent | 2ef3c46388d6cb99889d176b2d06652daf67b5f9 (diff) | |
Allow Task#setDragResizing on W_M_MULTI_WINDOW
This CL unlocks the capability to set Task#setDragResizing for tasks in
WINDOWING_MODE_MULTI_WINDOW.
With Task#setDragResizing, some resizing optimizations (e.g., using a
fullscreen-sized surface to reduce reallocations) are applied while
resizing.
Because W_M_MULTI_WINDOW is also allowed to be resized from the Shell,
we need such optimizations for W_M_MULTI_WINDOW as well.
It used to be allowed for legacy docked tasks, but the docked mode
refactoring accidentally cleaned this up. This CL restores the
capability.
Bug: 308722494
Test: TaskTests
Change-Id: I4dc9150ebbcc0cb55eddb7d52090da6e983fe06e
| -rw-r--r-- | services/core/java/com/android/server/wm/Task.java | 2 | ||||
| -rw-r--r-- | services/tests/wmtests/src/com/android/server/wm/TaskTests.java | 29 |
2 files changed, 30 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index 71dbd29a0410..af86a88942f2 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -2914,7 +2914,7 @@ class Task extends TaskFragment { if (mDragResizing != dragResizing) { // No need to check if allowed if it's leaving dragResize if (dragResizing - && !(getRootTask().getWindowingMode() == WINDOWING_MODE_FREEFORM)) { + && !(getRootTask().getWindowConfiguration().canResizeTask())) { Slog.e(TAG, "Drag resize isn't allowed for root task id=" + getRootTaskId()); return; } diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskTests.java index 0c580697bc4a..b5cf06aa459f 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TaskTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/TaskTests.java @@ -1579,6 +1579,35 @@ public class TaskTests extends WindowTestsBase { task.getTopChild()); } + @Test + public void testSetDragResizing() { + final Task task = createTask(mDisplayContent); + + // Allowed for freeform. + task.setWindowingMode(WINDOWING_MODE_FREEFORM); + + task.setDragResizing(true); + assertTrue(task.isDragResizing()); + task.setDragResizing(false); + assertFalse(task.isDragResizing()); + + // Allowed for multi-window. + task.setWindowingMode(WINDOWING_MODE_MULTI_WINDOW); + + task.setDragResizing(true); + assertTrue(task.isDragResizing()); + task.setDragResizing(false); + assertFalse(task.isDragResizing()); + + // Disallowed for fullscreen. + task.setWindowingMode(WINDOWING_MODE_FULLSCREEN); + + task.setDragResizing(true); + assertFalse(task.isDragResizing()); + task.setDragResizing(false); + assertFalse(task.isDragResizing()); + } + private Task getTestTask() { return new TaskBuilder(mSupervisor).setCreateActivity(true).build(); } |