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
This commit is contained in:
jorgegil@google.com
2022-06-13 17:54:09 -07:00
parent 86a33bf1c5
commit 6f009f903b

View File

@@ -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.