diff options
| author | 2024-08-15 10:05:49 +0000 | |
|---|---|---|
| committer | 2024-08-15 10:05:49 +0000 | |
| commit | 1a16f030803e5ec4669748602782fcd60a5aa88c (patch) | |
| tree | b8ff6ad824e40440edfcec3db7cb5f0498393f05 | |
| parent | 7fc7611fa319ec11c7c7b4345377e9f5e401dbf8 (diff) | |
| parent | ba17026ff127887628d4427f84991fda5f384ef6 (diff) | |
Merge "Verify windowing mode and bounds when apply overrides" into main
| -rw-r--r-- | services/core/java/com/android/server/wm/ConfigurationContainer.java | 14 |
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) { |