From 66d7124d33ed4d283c71b094ed6dcef00b1885d2 Mon Sep 17 00:00:00 2001 From: Jerry Chang Date: Wed, 30 Nov 2022 14:49:05 +0000 Subject: [PATCH] Revert "Fix win mode issues for unresizable apps" This reverts commit 383b0006c5e024c3dc63bc0884a7aae23c039516. Reason for revert: b/260695808 Change-Id: Ic2f6b57534f393731e40c210f3b7b00b7c1fa6b8 --- .../server/wm/TaskLaunchParamsModifier.java | 43 +++++++++---------- .../wm/TaskLaunchParamsModifierTests.java | 42 +++--------------- 2 files changed, 26 insertions(+), 59 deletions(-) diff --git a/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java b/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java index 39499523833e1..14a2d0383019e 100644 --- a/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java +++ b/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java @@ -277,31 +277,29 @@ class TaskLaunchParamsModifier implements LaunchParamsModifier { // is set with the suggestedDisplayArea. If it is set, but the eventual TaskDisplayArea is // different, we should recalcuating the bounds. boolean hasInitialBoundsForSuggestedDisplayAreaInFreeformMode = false; - // shouldSetAsOverrideWindowingMode is set if the task needs to retain the launchMode - // regardless of the windowing mode of the parent. - boolean shouldSetAsOverrideWindowingMode = false; - if (launchMode == WINDOWING_MODE_PINNED) { - if (DEBUG) appendLog("picture-in-picture"); - } else if (!root.isResizeable()) { - if (shouldLaunchUnresizableAppInFreeformInFreeformMode(root, suggestedDisplayArea, - options)) { - launchMode = WINDOWING_MODE_UNDEFINED; - if (outParams.mBounds.isEmpty()) { - getTaskBounds(root, suggestedDisplayArea, layout, launchMode, hasInitialBounds, - outParams.mBounds); - hasInitialBoundsForSuggestedDisplayAreaInFreeformMode = true; + if (suggestedDisplayArea.inFreeformWindowingMode()) { + if (launchMode == WINDOWING_MODE_PINNED) { + if (DEBUG) appendLog("picture-in-picture"); + } else if (!root.isResizeable()) { + if (shouldLaunchUnresizableAppInFreeform(root, suggestedDisplayArea, options)) { + launchMode = WINDOWING_MODE_FREEFORM; + if (outParams.mBounds.isEmpty()) { + getTaskBounds(root, suggestedDisplayArea, layout, launchMode, + hasInitialBounds, outParams.mBounds); + hasInitialBoundsForSuggestedDisplayAreaInFreeformMode = true; + } + if (DEBUG) appendLog("unresizable-freeform"); + } else { + launchMode = WINDOWING_MODE_FULLSCREEN; + outParams.mBounds.setEmpty(); + if (DEBUG) appendLog("unresizable-forced-maximize"); } - if (DEBUG) appendLog("unresizable-freeform"); - } else { - launchMode = WINDOWING_MODE_FULLSCREEN; - outParams.mBounds.setEmpty(); - shouldSetAsOverrideWindowingMode = true; - if (DEBUG) appendLog("unresizable-forced-maximize"); } + } else { + if (DEBUG) appendLog("non-freeform-task-display-area"); } // If launch mode matches display windowing mode, let it inherit from display. outParams.mWindowingMode = launchMode == suggestedDisplayArea.getWindowingMode() - && !shouldSetAsOverrideWindowingMode ? WINDOWING_MODE_UNDEFINED : launchMode; if (phase == PHASE_WINDOWING_MODE) { @@ -652,7 +650,7 @@ class TaskLaunchParamsModifier implements LaunchParamsModifier { inOutBounds.offset(xOffset, yOffset); } - private boolean shouldLaunchUnresizableAppInFreeformInFreeformMode(ActivityRecord activity, + private boolean shouldLaunchUnresizableAppInFreeform(ActivityRecord activity, TaskDisplayArea displayArea, @Nullable ActivityOptions options) { if (options != null && options.getLaunchWindowingMode() == WINDOWING_MODE_FULLSCREEN) { // Do not launch the activity in freeform if it explicitly requested fullscreen mode. @@ -665,7 +663,8 @@ class TaskLaunchParamsModifier implements LaunchParamsModifier { final int displayOrientation = orientationFromBounds(displayArea.getBounds()); final int activityOrientation = resolveOrientation(activity, displayArea, displayArea.getBounds()); - if (displayOrientation != activityOrientation) { + if (displayArea.getWindowingMode() == WINDOWING_MODE_FREEFORM + && displayOrientation != activityOrientation) { return true; } diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskLaunchParamsModifierTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskLaunchParamsModifierTests.java index 2a88eb0e7b617..1188f49ae60e9 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TaskLaunchParamsModifierTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/TaskLaunchParamsModifierTests.java @@ -825,11 +825,10 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { } @Test - public void testLaunchesPortraitUnresizableOnFreeformLandscapeDisplay() { + public void testLaunchesPortraitUnresizableOnFreeformDisplayWithFreeformSizeCompat() { mAtm.mDevEnableNonResizableMultiWindow = true; final TestDisplayContent freeformDisplay = createNewDisplayContent( WINDOWING_MODE_FREEFORM); - assertTrue(freeformDisplay.getBounds().width() > freeformDisplay.getBounds().height()); final ActivityOptions options = ActivityOptions.makeBasic(); mCurrent.mPreferredTaskDisplayArea = freeformDisplay.getDefaultTaskDisplayArea(); mActivity.info.resizeMode = RESIZE_MODE_UNRESIZEABLE; @@ -837,42 +836,12 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { assertEquals(RESULT_CONTINUE, new CalculateRequestBuilder().setOptions(options).calculate()); - assertEquals(WINDOWING_MODE_UNDEFINED, mResult.mWindowingMode); - } - - @Test - public void testLaunchesLandscapeUnresizableOnFreeformLandscapeDisplay() { - mAtm.mDevEnableNonResizableMultiWindow = true; - final TestDisplayContent freeformDisplay = createNewDisplayContent( + assertEquivalentWindowingMode(WINDOWING_MODE_FREEFORM, mResult.mWindowingMode, WINDOWING_MODE_FREEFORM); - assertTrue(freeformDisplay.getBounds().width() > freeformDisplay.getBounds().height()); - final ActivityOptions options = ActivityOptions.makeBasic(); - mCurrent.mPreferredTaskDisplayArea = freeformDisplay.getDefaultTaskDisplayArea(); - mActivity.info.resizeMode = RESIZE_MODE_UNRESIZEABLE; - mActivity.info.screenOrientation = SCREEN_ORIENTATION_LANDSCAPE; - assertEquals(RESULT_CONTINUE, - new CalculateRequestBuilder().setOptions(options).calculate()); - - assertEquals(WINDOWING_MODE_FULLSCREEN, mResult.mWindowingMode); } @Test - public void testLaunchesUndefinedUnresizableOnFreeformLandscapeDisplay() { - mAtm.mDevEnableNonResizableMultiWindow = true; - final TestDisplayContent freeformDisplay = createNewDisplayContent( - WINDOWING_MODE_FREEFORM); - assertTrue(freeformDisplay.getBounds().width() > freeformDisplay.getBounds().height()); - final ActivityOptions options = ActivityOptions.makeBasic(); - mCurrent.mPreferredTaskDisplayArea = freeformDisplay.getDefaultTaskDisplayArea(); - mActivity.info.resizeMode = RESIZE_MODE_UNRESIZEABLE; - assertEquals(RESULT_CONTINUE, - new CalculateRequestBuilder().setOptions(options).calculate()); - - assertEquals(WINDOWING_MODE_FULLSCREEN, mResult.mWindowingMode); - } - - @Test - public void testForceMaximizingAppsOnNonFreeformDisplay() { + public void testSkipsForceMaximizingAppsOnNonFreeformDisplay() { final ActivityOptions options = ActivityOptions.makeBasic(); options.setLaunchWindowingMode(WINDOWING_MODE_FREEFORM); options.setLaunchBounds(new Rect(0, 0, 200, 100)); @@ -886,9 +855,8 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { assertEquals(RESULT_CONTINUE, new CalculateRequestBuilder().setOptions(options).calculate()); - // Non-resizable apps must be launched in fullscreen in a fullscreen display regardless of - // other properties. - assertEquals(WINDOWING_MODE_FULLSCREEN, mResult.mWindowingMode); + assertEquivalentWindowingMode(WINDOWING_MODE_FREEFORM, mResult.mWindowingMode, + WINDOWING_MODE_FULLSCREEN); } @Test