Merge "Fix creating unexpected letterbox surfaces" into sc-dev

This commit is contained in:
Riddle Hsu
2021-04-27 12:19:09 +00:00
committed by Android (Google) Code Review
3 changed files with 11 additions and 13 deletions

View File

@@ -1575,7 +1575,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
}
return false;
}
if (!r.getParent().matchParentBounds()) {
if (!r.getDisplayArea().matchParentBounds()) {
// Because the fixed rotated configuration applies to activity directly, if its parent
// has it own policy for bounds, the activity bounds based on parent is unknown.
return false;

View File

@@ -1265,7 +1265,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
mHaveFrame = true;
final Task task = getTask();
final boolean isFullscreenAndFillsDisplay = !inMultiWindowMode() && matchesDisplayBounds();
final boolean isFullscreenAndFillsArea = !inMultiWindowMode() && matchesDisplayAreaBounds();
final boolean windowsAreFloating = task != null && task.isFloating();
final DisplayContent dc = getDisplayContent();
final DisplayInfo displayInfo = getDisplayInfo();
@@ -1290,7 +1290,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
: isImeLayeringTarget();
final boolean isImeTarget =
imeWin != null && imeWin.isVisibleNow() && isInputMethodAdjustTarget;
if (isFullscreenAndFillsDisplay || layoutInParentFrame()) {
if (isFullscreenAndFillsArea || layoutInParentFrame()) {
// We use the parent frame as the containing frame for fullscreen and child windows
windowFrames.mContainingFrame.set(windowFrames.mParentFrame);
layoutDisplayFrame = windowFrames.mDisplayFrame;
@@ -2272,19 +2272,15 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
&& mWindowFrames.mFrame.bottom >= displayInfo.appHeight;
}
private boolean matchesDisplayBounds() {
final Rect displayBounds = mToken.getFixedRotationTransformDisplayBounds();
if (displayBounds != null) {
// If the rotated display bounds are available, the window bounds are also rotated.
return displayBounds.equals(getBounds());
}
return getDisplayContent().getBounds().equals(getBounds());
}
boolean matchesDisplayAreaBounds() {
final Rect rotatedDisplayBounds = mToken.getFixedRotationTransformDisplayBounds();
if (rotatedDisplayBounds != null) {
// If the rotated display bounds are available, the window bounds are also rotated.
return rotatedDisplayBounds.equals(getBounds());
}
final DisplayArea displayArea = getDisplayArea();
if (displayArea == null) {
return matchesDisplayBounds();
return getDisplayContent().getBounds().equals(getBounds());
}
return displayArea.getBounds().equals(getBounds());
}

View File

@@ -1320,6 +1320,8 @@ public class DisplayContentTests extends WindowTestsBase {
app.setRequestedOrientation(newOrientation);
assertTrue(app.isFixedRotationTransforming());
assertTrue(mAppWindow.matchesDisplayAreaBounds());
assertFalse(mAppWindow.isLetterboxedAppWindow());
assertTrue(mDisplayContent.getDisplayRotation().shouldRotateSeamlessly(
ROTATION_0 /* oldRotation */, ROTATION_90 /* newRotation */,
false /* forceUpdate */));