Merge "Apply rotation animation when canceling fixed rotation" into sc-dev am: 25a8b5f625

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14352468

Change-Id: I11db51d9a053249db851bea536e560b4ed72b7da
This commit is contained in:
Riddle Hsu
2021-05-04 12:11:42 +00:00
committed by Automerger Merge Worker
2 changed files with 18 additions and 3 deletions

View File

@@ -6619,9 +6619,15 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
@Override
void onCancelFixedRotationTransform(int originalDisplayRotation) {
if (this != mDisplayContent.getLastOrientationSource()
|| getRequestedConfigurationOrientation() != ORIENTATION_UNDEFINED) {
// Only need to handle the activity that should be rotated with display.
if (this != mDisplayContent.getLastOrientationSource()) {
// This activity doesn't affect display rotation.
return;
}
final int requestedOrientation = getRequestedConfigurationOrientation();
if (requestedOrientation != ORIENTATION_UNDEFINED
&& requestedOrientation != mDisplayContent.getConfiguration().orientation) {
// Only need to handle the activity that can be rotated with display or the activity
// has requested the same orientation.
return;
}

View File

@@ -1723,6 +1723,15 @@ public class ActivityRecordTests extends WindowTestsBase {
assertFalse(display.hasTopFixedRotationLaunchingApp());
assertFalse(activity.hasFixedRotationTransform());
// Simulate that the activity requests the same orientation as display.
activity.setOrientation(display.getConfiguration().orientation);
// Skip the real freezing.
activity.mVisibleRequested = false;
clearInvocations(activity);
activity.onCancelFixedRotationTransform(originalRotation);
// The implementation of cancellation must be executed.
verify(activity).startFreezingScreen(originalRotation);
}
@Test