Merge "Letterbox resizable fixed orientation activities in multi-window." into tm-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
8d7c5727d2
@@ -7984,20 +7984,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
|
|||||||
// orientation with insets applied.
|
// orientation with insets applied.
|
||||||
return;
|
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) {
|
if (windowingMode == WINDOWING_MODE_PINNED) {
|
||||||
// PiP bounds have higher priority than the requested orientation. Otherwise the
|
// PiP bounds have higher priority than the requested orientation. Otherwise the
|
||||||
// activity may be squeezed into a small piece.
|
// activity may be squeezed into a small piece.
|
||||||
|
|||||||
@@ -611,10 +611,9 @@ public class ActivityRecordTests extends WindowTestsBase {
|
|||||||
activity.setRequestedOrientation(activityCurOrientation == ORIENTATION_LANDSCAPE
|
activity.setRequestedOrientation(activityCurOrientation == ORIENTATION_LANDSCAPE
|
||||||
? SCREEN_ORIENTATION_PORTRAIT : SCREEN_ORIENTATION_LANDSCAPE);
|
? SCREEN_ORIENTATION_PORTRAIT : SCREEN_ORIENTATION_LANDSCAPE);
|
||||||
|
|
||||||
// Asserts fixed orientation request is ignored, and the orientation is not changed
|
// Asserts fixed orientation request is not ignored, and the orientation is changed.
|
||||||
// (fill Task).
|
assertNotEquals(activityCurOrientation, activity.getConfiguration().orientation);
|
||||||
assertEquals(activityCurOrientation, activity.getConfiguration().orientation);
|
assertTrue(activity.isLetterboxedForFixedOrientationAndAspectRatio());
|
||||||
assertFalse(activity.isLetterboxedForFixedOrientationAndAspectRatio());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
@@ -1875,6 +1875,28 @@ public class SizeCompatTests extends WindowTestsBase {
|
|||||||
assertLetterboxSurfacesDrawnBetweenActivityAndParentBounds(organizer.mPrimary.getBounds());
|
assertLetterboxSurfacesDrawnBetweenActivityAndParentBounds(organizer.mPrimary.getBounds());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@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
|
@Test
|
||||||
public void testSupportsNonResizableInSplitScreen_fillTaskForSameOrientation() {
|
public void testSupportsNonResizableInSplitScreen_fillTaskForSameOrientation() {
|
||||||
// Support non resizable in multi window
|
// Support non resizable in multi window
|
||||||
|
|||||||
Reference in New Issue
Block a user