Merge "Report enterAnimationComplete when transient launch is committed" into tm-qpr-dev am: 505bcd2804

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

Change-Id: I15d30d27c2f48b24deb93597474f479ef242b043
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Evan Rosky
2022-09-07 17:23:38 +00:00
committed by Automerger Merge Worker
2 changed files with 17 additions and 1 deletions

View File

@@ -735,6 +735,10 @@ class Transition extends Binder implements BLASTSyncEngine.TransactionReadyListe
if (mChanges.get(ar).mVisible != visibleAtTransitionEnd) {
// Legacy dispatch relies on this (for now).
ar.mEnteringAnimation = visibleAtTransitionEnd;
} else if (mTransientLaunches != null && mTransientLaunches.containsKey(ar)
&& ar.isVisible()) {
// Transient launch was committed, so report enteringAnimation
ar.mEnteringAnimation = true;
}
continue;
}

View File

@@ -964,8 +964,17 @@ public class TransitionTests extends WindowTestsBase {
@Test
public void testTransientLaunch() {
final TaskSnapshotController snapshotController = mock(TaskSnapshotController.class);
final ArrayList<ActivityRecord> enteringAnimReports = new ArrayList<>();
final TransitionController controller = new TransitionController(mAtm, snapshotController,
mock(TransitionTracer.class));
mock(TransitionTracer.class)) {
@Override
protected void dispatchLegacyAppTransitionFinished(ActivityRecord ar) {
if (ar.mEnteringAnimation) {
enteringAnimReports.add(ar);
}
super.dispatchLegacyAppTransitionFinished(ar);
}
};
final ITransitionPlayer player = new ITransitionPlayer.Default();
controller.registerTransitionPlayer(player, null /* playerProc */);
final Transition openTransition = controller.createTransition(TRANSIT_OPEN);
@@ -1010,6 +1019,7 @@ public class TransitionTests extends WindowTestsBase {
activity1.mVisibleRequested = false;
activity2.mVisibleRequested = true;
activity2.setVisible(true);
// Using abort to force-finish the sync (since we obviously can't wait for drawing).
// We didn't call abort on the actual transition, so it will still run onTransactionReady
@@ -1020,9 +1030,11 @@ public class TransitionTests extends WindowTestsBase {
// called until finish).
verify(snapshotController, times(0)).recordTaskSnapshot(eq(task1), eq(false));
enteringAnimReports.clear();
closeTransition.finishTransition();
verify(snapshotController, times(1)).recordTaskSnapshot(eq(task1), eq(false));
assertTrue(enteringAnimReports.contains(activity2));
}
@Test