summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Yunfan Chen <yunfanc@google.com> 2024-08-15 10:05:49 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2024-08-15 10:05:49 +0000
commit1a16f030803e5ec4669748602782fcd60a5aa88c (patch)
treeb8ff6ad824e40440edfcec3db7cb5f0498393f05
parent7fc7611fa319ec11c7c7b4345377e9f5e401dbf8 (diff)
parentba17026ff127887628d4427f84991fda5f384ef6 (diff)
Merge "Verify windowing mode and bounds when apply overrides" into main
-rw-r--r--services/core/java/com/android/server/wm/ConfigurationContainer.java14
1 files changed, 12 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/wm/ConfigurationContainer.java b/services/core/java/com/android/server/wm/ConfigurationContainer.java
index 3ebaf03c4a31..9f1966b974d3 100644
--- a/services/core/java/com/android/server/wm/ConfigurationContainer.java
+++ b/services/core/java/com/android/server/wm/ConfigurationContainer.java
@@ -255,8 +255,18 @@ public abstract class ConfigurationContainer<E extends ConfigurationContainer> {
inOutConfig.windowConfiguration.setAppBounds(
newParentConfiguration.windowConfiguration.getBounds());
outAppBounds = inOutConfig.windowConfiguration.getAppBounds();
- outAppBounds.inset(displayContent.getDisplayPolicy()
- .getDecorInsetsInfo(rotation, dw, dh).mOverrideNonDecorInsets);
+ if (inOutConfig.windowConfiguration.getWindowingMode() == WINDOWING_MODE_FULLSCREEN) {
+ final DisplayPolicy.DecorInsets.Info decor =
+ displayContent.getDisplayPolicy().getDecorInsetsInfo(rotation, dw, dh);
+ if (outAppBounds.contains(decor.mOverrideNonDecorFrame)) {
+ outAppBounds.intersect(decor.mOverrideNonDecorFrame);
+ }
+ } else {
+ // TODO(b/358509380): Handle other windowing mode like split screen and freeform
+ // cases correctly.
+ outAppBounds.inset(displayContent.getDisplayPolicy()
+ .getDecorInsetsInfo(rotation, dw, dh).mOverrideNonDecorInsets);
+ }
}
float density = inOutConfig.densityDpi;
if (density == Configuration.DENSITY_DPI_UNDEFINED) {