Fix CTS failure for waterfall device

When entering to or exiting from Pip mode, the PipTaskOrganizer will
set the windowing mode of the activity of the task to
WINDOWING_MODE_FULLSCREEN and temporarily set the bounds of the task to
fullscreen size for transitioning.
It will get the wrong smallestScreenWidthDp if the calculation is based
on this temporary fullscreen bounds.

We should just inherit the value from parent for this temporary state.

Bug: 206871341
Test: atest PinnedStackTests

Change-Id: If3001b13b48b1e3124b9bd898ab740a2d3025df0
This commit is contained in:
shawnlin
2021-11-29 15:21:55 +08:00
parent 642ead3a05
commit 59a7b14c3e

View File

@@ -1957,7 +1957,15 @@ class TaskFragment extends WindowContainer<WindowContainer> {
if (inOutConfig.smallestScreenWidthDp
== Configuration.SMALLEST_SCREEN_WIDTH_DP_UNDEFINED) {
if (WindowConfiguration.isFloating(windowingMode)) {
// When entering to or exiting from Pip, the PipTaskOrganizer will set the
// windowing mode of the activity in the task to WINDOWING_MODE_FULLSCREEN and
// temporarily set the bounds of the task to fullscreen size for transitioning.
// It will get the wrong value if the calculation is based on this temporary
// fullscreen bounds.
// We should just inherit the value from parent for this temporary state.
final boolean inPipTransition = windowingMode == WINDOWING_MODE_PINNED
&& !mTmpFullBounds.isEmpty() && mTmpFullBounds.equals(parentBounds);
if (WindowConfiguration.isFloating(windowingMode) && !inPipTransition) {
// For floating tasks, calculate the smallest width from the bounds of the task
inOutConfig.smallestScreenWidthDp = (int) (
Math.min(mTmpFullBounds.width(), mTmpFullBounds.height()) / density);