summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author jorgegil@google.com <jorgegil@google.com> 2022-06-13 17:54:09 -0700
committer jorgegil@google.com <jorgegil@google.com> 2022-06-13 17:54:09 -0700
commit6f009f903b8364ef50eb0b20faaaefb4920fa951 (patch)
tree034a63caaee4c43c3f762e47cfb99e72c6027d38
parent86a33bf1c5dee7b69f49cd9fa3d6d9e7d2ba9ea6 (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.java5
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.