summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Riddle Hsu <riddlehsu@google.com> 2021-07-30 17:36:24 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2021-07-30 17:36:24 +0000
commiteced4b32087018b23efe9b59803f7a5d8e59d6bc (patch)
tree10995d7efb4c8c5f9a9dabe76b1f7d78cdbdf24a
parentd2aeb490a85f056c4f7282ed2f3717a0e162071b (diff)
parent9d4a077de92f44ab53e705f5f02ab9743db1d5a9 (diff)
Merge "Use size compat bounds for window layout" into sc-v2-dev
-rw-r--r--services/core/java/com/android/server/wm/WindowState.java8
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java5
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