diff options
| author | 2021-07-30 17:36:24 +0000 | |
|---|---|---|
| committer | 2021-07-30 17:36:24 +0000 | |
| commit | eced4b32087018b23efe9b59803f7a5d8e59d6bc (patch) | |
| tree | 10995d7efb4c8c5f9a9dabe76b1f7d78cdbdf24a | |
| parent | d2aeb490a85f056c4f7282ed2f3717a0e162071b (diff) | |
| parent | 9d4a077de92f44ab53e705f5f02ab9743db1d5a9 (diff) | |
Merge "Use size compat bounds for window layout" into sc-v2-dev
| -rw-r--r-- | services/core/java/com/android/server/wm/WindowState.java | 8 | ||||
| -rw-r--r-- | services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java | 5 |
2 files changed, 13 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index 72d1b49cd0d7..18734a52bd06 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -1441,6 +1441,14 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP } } + @Override + public Rect getBounds() { + // The window bounds are used for layout in screen coordinates. If the token has bounds for + // size compatibility mode, its configuration bounds are app based coordinates which should + // not be used for layout. + return mToken.hasSizeCompatBounds() ? mToken.getBounds() : super.getBounds(); + } + /** Retrieves the current frame of the window that the application sees. */ Rect getFrame() { return mWindowFrames.mFrame; 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 59894973521d..d10c006831d2 100644 --- a/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java @@ -320,6 +320,11 @@ public class SizeCompatTests extends WindowTestsBase { assertScaled(); // Activity is sandboxed due to size compat mode. assertActivityMaxBoundsSandboxed(); + + final WindowState appWindow = addWindowToActivity(mActivity); + assertTrue(mActivity.hasSizeCompatBounds()); + assertEquals("App window must use size compat bounds for layout in screen space", + mActivity.getBounds(), appWindow.getBounds()); } @Test |