Merge "Report enterAnimationComplete when transient launch is committed" into tm-qpr-dev

This commit is contained in:
Evan Rosky
2022-09-07 17:15:26 +00:00
committed by Android (Google) Code Review
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