Generalize window bounds for layout

This allows the windows belonging to an activity can have override
bounds. Such as a starting window can have larger bounds than the
activity which is embedded to a smaller region.

Bug: 189385912
Test: DisplayContentTests

Change-Id: I833817f961e9b9d80080b94c1b6682ea49ca4c8e
This commit is contained in:
Riddle Hsu
2021-07-08 01:25:30 +08:00
parent 47d020aecd
commit b13b6fb7fc
3 changed files with 4 additions and 12 deletions

View File

@@ -1672,7 +1672,7 @@ public class DisplayPolicy {
// frame set for the simulated layout for this case.
computeWindowBounds(attrs, state, df, df);
} else {
computeWindowBounds(attrs, state, win.mToken.getBounds(), df);
computeWindowBounds(attrs, state, win.getBounds(), df);
}
if (attached == null) {
pf.set(df);

View File

@@ -1443,16 +1443,6 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
}
}
// TODO: Look into whether this override is still necessary.
@Override
public Rect getBounds() {
if (mActivityRecord != null) {
return mActivityRecord.getBounds();
} else {
return super.getBounds();
}
}
/** Retrieves the current frame of the window that the application sees. */
Rect getFrame() {
return mWindowFrames.mFrame;

View File

@@ -590,7 +590,9 @@ public class DisplayContentTests extends WindowTestsBase {
dc.setImeLayeringTarget(ws);
// Adjust bounds so that matchesRootDisplayAreaBounds() returns false.
ws.mActivityRecord.getConfiguration().windowConfiguration.setBounds(new Rect(1, 1, 1, 1));
final Rect bounds = new Rect(dc.getBounds());
bounds.scale(0.5f);
ws.mActivityRecord.setBounds(bounds);
assertFalse("matchesRootDisplayAreaBounds() should return false",
ws.matchesDisplayAreaBounds());