Merge "Fix creating unexpected letterbox surfaces" into sc-dev
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
@@ -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 */));
|
||||
|
||||
Reference in New Issue
Block a user