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
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index b2a2452..8faeebc 100644
--- a/services/core/java/com/android/server/wm/WindowState.java
+++ b/services/core/java/com/android/server/wm/WindowState.java
@@ -2334,6 +2334,8 @@
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.
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
index 3db53eb..3eed0b7 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
@@ -2939,6 +2939,9 @@
// 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);