diff options
| -rw-r--r-- | services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java | 12 | ||||
| -rw-r--r-- | services/tests/wmtests/src/com/android/server/wm/TaskLaunchParamsModifierTests.java | 15 |
2 files changed, 24 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java b/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java index 5107b522c33b..2a5584029bcb 100644 --- a/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java +++ b/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java @@ -219,10 +219,16 @@ class TaskLaunchParamsModifier implements LaunchParamsModifier { } } - if (launchMode == WINDOWING_MODE_FREEFORM && !currentParams.mBounds.isEmpty()) { + if (!currentParams.mBounds.isEmpty()) { + // Carry over bounds from callers regardless of launch mode because bounds is still + // used to restore last non-fullscreen bounds when launch mode is not freeform. + // Therefore it's not a resolution step for non-freeform launch mode and only + // consider it fully resolved only when launch mode is freeform. outParams.mBounds.set(currentParams.mBounds); - fullyResolvedCurrentParam = true; - if (DEBUG) appendLog("inherit-bounds=" + outParams.mBounds); + if (launchMode == WINDOWING_MODE_FREEFORM) { + fullyResolvedCurrentParam = true; + if (DEBUG) appendLog("inherit-bounds=" + outParams.mBounds); + } } } 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 7186e22cefef..e789c16c1bd7 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TaskLaunchParamsModifierTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/TaskLaunchParamsModifierTests.java @@ -768,6 +768,21 @@ public class TaskLaunchParamsModifierTests extends ActivityTestsBase { } @Test + public void testReturnBoundsForFullscreenWindowingMode() { + final TestActivityDisplay freeformDisplay = createNewActivityDisplay( + WINDOWING_MODE_FREEFORM); + + mCurrent.mPreferredDisplayId = freeformDisplay.mDisplayId; + mCurrent.mWindowingMode = WINDOWING_MODE_FULLSCREEN; + mCurrent.mBounds.set(0, 0, 200, 100); + + assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null, + mActivity, /* source */ null, /* options */ null, mCurrent, mResult)); + + assertEquals(new Rect(0, 0, 200, 100), mResult.mBounds); + } + + @Test public void testUsesDisplayOrientationForNoSensorOrientation() { final TestActivityDisplay freeformDisplay = createNewActivityDisplay( WINDOWING_MODE_FREEFORM); |