summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/wm/ActivityRecord.java15
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java7
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java22
3 files changed, 26 insertions, 18 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
index 6bb7acd65143..abbcd28575cd 100644
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
@@ -7984,20 +7984,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
// orientation with insets applied.
return;
}
- // Not using Task#isResizeable() or ActivityRecord#isResizeable() directly because app
- // compatibility testing showed that android:supportsPictureInPicture="true" alone is not
- // sufficient signal for not letterboxing an app.
- // TODO(214602463): Remove multi-window check since orientation and aspect ratio
- // restrictions should always be applied in multi-window.
- final boolean isResizeable = task != null
- // Activity should be resizable if the task is.
- ? task.isResizeable(/* checkPictureInPictureSupport */ false)
- || isResizeable(/* checkPictureInPictureSupport */ false)
- : isResizeable(/* checkPictureInPictureSupport */ false);
- if (WindowConfiguration.inMultiWindowMode(windowingMode) && isResizeable) {
- // Ignore orientation request for resizable apps in multi window.
- return;
- }
+
if (windowingMode == WINDOWING_MODE_PINNED) {
// PiP bounds have higher priority than the requested orientation. Otherwise the
// activity may be squeezed into a small piece.
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
index 533540e2568d..36e7a66d52e2 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
@@ -611,10 +611,9 @@ public class ActivityRecordTests extends WindowTestsBase {
activity.setRequestedOrientation(activityCurOrientation == ORIENTATION_LANDSCAPE
? SCREEN_ORIENTATION_PORTRAIT : SCREEN_ORIENTATION_LANDSCAPE);
- // Asserts fixed orientation request is ignored, and the orientation is not changed
- // (fill Task).
- assertEquals(activityCurOrientation, activity.getConfiguration().orientation);
- assertFalse(activity.isLetterboxedForFixedOrientationAndAspectRatio());
+ // Asserts fixed orientation request is not ignored, and the orientation is changed.
+ assertNotEquals(activityCurOrientation, activity.getConfiguration().orientation);
+ assertTrue(activity.isLetterboxedForFixedOrientationAndAspectRatio());
}
@Test
diff --git a/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java b/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java
index 76fb7ff2e6f8..35d8129eb385 100644
--- a/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java
@@ -1876,6 +1876,28 @@ public class SizeCompatTests extends WindowTestsBase {
}
@Test
+ public void testResizableFixedOrientationAppInSplitScreen_letterboxForDifferentOrientation() {
+ setUpDisplaySizeWithApp(1000, 2800);
+ final TestSplitOrganizer organizer =
+ new TestSplitOrganizer(mAtm, mActivity.getDisplayContent());
+
+ // Resizable landscape-only activity.
+ prepareLimitedBounds(mActivity, SCREEN_ORIENTATION_LANDSCAPE, /* isUnresizable= */ false);
+
+ final Rect originalBounds = new Rect(mActivity.getBounds());
+
+ // Move activity to split screen which takes half of the screen.
+ mTask.reparent(organizer.mPrimary, POSITION_TOP, /* moveParents= */ false , "test");
+ organizer.mPrimary.setBounds(0, 0, 1000, 1400);
+ assertEquals(WINDOWING_MODE_MULTI_WINDOW, mTask.getWindowingMode());
+ assertEquals(WINDOWING_MODE_MULTI_WINDOW, mActivity.getWindowingMode());
+
+ // Resizable activity is not in size compat mode but in the letterbox for fixed orientation.
+ assertFitted();
+ assertTrue(mActivity.isLetterboxedForFixedOrientationAndAspectRatio());
+ }
+
+ @Test
public void testSupportsNonResizableInSplitScreen_fillTaskForSameOrientation() {
// Support non resizable in multi window
mAtm.mDevEnableNonResizableMultiWindow = true;