Merge "Do not skip finishing async rotation by a non-rotation transition" into udc-qpr-dev
This commit is contained in:
@@ -1935,7 +1935,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
|
|||||||
} else if (mFixedRotationLaunchingApp != null && r == null) {
|
} else if (mFixedRotationLaunchingApp != null && r == null) {
|
||||||
mWmService.mDisplayNotificationController.dispatchFixedRotationFinished(this);
|
mWmService.mDisplayNotificationController.dispatchFixedRotationFinished(this);
|
||||||
// Keep async rotation controller if the next transition of display is requested.
|
// Keep async rotation controller if the next transition of display is requested.
|
||||||
if (!mTransitionController.isCollecting(this)) {
|
if (!mTransitionController.hasCollectingRotationChange(this, getRotation())) {
|
||||||
finishAsyncRotationIfPossible();
|
finishAsyncRotationIfPossible();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -577,6 +577,17 @@ class TransitionController {
|
|||||||
return mCollectingTransition != null ? mCollectingTransition.mType : TRANSIT_NONE;
|
return mCollectingTransition != null ? mCollectingTransition.mType : TRANSIT_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns {@code true} if the window container is in the collecting transition, and its
|
||||||
|
* collected rotation is different from the target rotation.
|
||||||
|
*/
|
||||||
|
boolean hasCollectingRotationChange(@NonNull WindowContainer<?> wc, int targetRotation) {
|
||||||
|
final Transition transition = mCollectingTransition;
|
||||||
|
if (transition == null || !transition.mParticipants.contains(wc)) return false;
|
||||||
|
final Transition.ChangeInfo changeInfo = transition.mChanges.get(wc);
|
||||||
|
return changeInfo != null && changeInfo.mRotation != targetRotation;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see #requestTransitionIfNeeded(int, int, WindowContainer, WindowContainer, RemoteTransition)
|
* @see #requestTransitionIfNeeded(int, int, WindowContainer, WindowContainer, RemoteTransition)
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1239,6 +1239,27 @@ public class TransitionTests extends WindowTestsBase {
|
|||||||
assertEquals(freeze, controller.shouldFreezeInsetsPosition(w));
|
assertEquals(freeze, controller.shouldFreezeInsetsPosition(w));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testFinishRotationControllerWithFixedRotation() {
|
||||||
|
final ActivityRecord app = new ActivityBuilder(mAtm).setCreateTask(true).build();
|
||||||
|
mDisplayContent.setFixedRotationLaunchingAppUnchecked(app);
|
||||||
|
registerTestTransitionPlayer();
|
||||||
|
mDisplayContent.setLastHasContent();
|
||||||
|
mDisplayContent.requestChangeTransitionIfNeeded(1 /* changes */, null /* displayChange */);
|
||||||
|
assertNotNull(mDisplayContent.getAsyncRotationController());
|
||||||
|
mDisplayContent.setFixedRotationLaunchingAppUnchecked(null);
|
||||||
|
assertNull("Clear rotation controller if rotation is not changed",
|
||||||
|
mDisplayContent.getAsyncRotationController());
|
||||||
|
|
||||||
|
mDisplayContent.setFixedRotationLaunchingAppUnchecked(app);
|
||||||
|
assertNotNull(mDisplayContent.getAsyncRotationController());
|
||||||
|
mDisplayContent.getDisplayRotation().setRotation(
|
||||||
|
mDisplayContent.getWindowConfiguration().getRotation() + 1);
|
||||||
|
mDisplayContent.setFixedRotationLaunchingAppUnchecked(null);
|
||||||
|
assertNotNull("Keep rotation controller if rotation will be changed",
|
||||||
|
mDisplayContent.getAsyncRotationController());
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testDeferRotationForTransientLaunch() {
|
public void testDeferRotationForTransientLaunch() {
|
||||||
final TestTransitionPlayer player = registerTestTransitionPlayer();
|
final TestTransitionPlayer player = registerTestTransitionPlayer();
|
||||||
|
|||||||
Reference in New Issue
Block a user