diff options
| author | 2022-06-13 17:54:09 -0700 | |
|---|---|---|
| committer | 2022-06-13 17:54:09 -0700 | |
| commit | 6f009f903b8364ef50eb0b20faaaefb4920fa951 (patch) | |
| tree | 034a63caaee4c43c3f762e47cfb99e72c6027d38 | |
| parent | 86a33bf1c5dee7b69f49cd9fa3d6d9e7d2ba9ea6 (diff) | |
Only restore to mLastNonFullscreenBounds if requested bounds unset
Whenever a task changes windowing mode to freeform (or undefined and
its parent is freeform), the last non-fullscreen bounds are restored.
This CL changes that so that the restore bounds are used only when
the requested override window config bounds are null/empty, to
prevent overwriting bounds set by wm shell in a transition's WCT.
Bug: 235885662
Test: atest TaskTests
Change-Id: Iba9c94d700ad4e1ef05073353c0d47c34daf5b26
| -rw-r--r-- | services/core/java/com/android/server/wm/Task.java | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index 4a643ef6a787..719e2d44eb57 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -1862,6 +1862,11 @@ class Task extends TaskFragment { if (getRequestedOverrideWindowingMode() == WINDOWING_MODE_UNDEFINED) { nextPersistTaskBounds = newParentConfig.windowConfiguration.persistTaskBounds(); } + // Only restore to the last non-fullscreen bounds when the requested override bounds + // have not been explicitly set already. + nextPersistTaskBounds &= + (getRequestedOverrideConfiguration().windowConfiguration.getBounds() == null + || getRequestedOverrideConfiguration().windowConfiguration.getBounds().isEmpty()); if (!prevPersistTaskBounds && nextPersistTaskBounds && mLastNonFullscreenBounds != null && !mLastNonFullscreenBounds.isEmpty()) { // Bypass onRequestedOverrideConfigurationChanged here to avoid infinite loop. |