Do not associate staring window to task for rotation change

The association was used for using consistent appearance if the
starting window is moved to an activity with different letterbox
configurations.

But if the change is from display rotation or fixed rotation, it
should follow the configuration of the current activity.

Fix: 294775946
Test: ActivityRecordTests#testTransferStartingWindowSetFixedRotation
Change-Id: I2f6698aeb8470b959c10a7f1a31aa481ea5731ea
This commit is contained in:
Riddle Hsu
2023-08-08 13:02:05 +00:00
parent f2bc3386e4
commit 038b68935d
2 changed files with 5 additions and 0 deletions

View File

@@ -2334,6 +2334,8 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
mDisplayContent.updateImeControlTarget(isImeLayeringTarget() /* updateImeParent */);
// Fix the starting window to task when Activity has changed.
if (mStartingData != null && mStartingData.mAssociatedTask == null
&& mTempConfiguration.windowConfiguration.getRotation()
== selfConfiguration.windowConfiguration.getRotation()
&& !mTempConfiguration.windowConfiguration.getBounds().equals(getBounds())) {
mStartingData.mResizedFromTransfer = true;
// Lock the starting window to task, so it won't resize from transfer anymore.

View File

@@ -2939,6 +2939,9 @@ public class ActivityRecordTests extends WindowTestsBase {
// transform to activity1.
int rotation = (mDisplayContent.getRotation() + 1) % 4;
mDisplayContent.setFixedRotationLaunchingApp(activity, rotation);
// The configuration with rotation change should not trigger task-association.
assertNotNull(activity.mStartingData);
assertNull(activity.mStartingData.mAssociatedTask);
doReturn(rotation).when(mDisplayContent)
.rotationForActivityInDifferentOrientation(topActivity);