Merge "Check nullity of finished callback"

This commit is contained in:
Vadim Caen
2019-09-19 09:29:47 +00:00
committed by Android (Google) Code Review
2 changed files with 15 additions and 1 deletions

View File

@@ -54,6 +54,7 @@ class SurfaceAnimator {
final Animatable mAnimatable;
private final OnAnimationFinishedCallback mInnerAnimationFinishedCallback;
@VisibleForTesting
@Nullable
final Runnable mAnimationFinishedCallback;
private boolean mAnimationStartDelayed;
@@ -262,7 +263,7 @@ class SurfaceAnimator {
if (!mAnimationStartDelayed && forwardCancel) {
animation.onAnimationCancelled(leash);
}
if (!restarting) {
if (!restarting && mAnimationFinishedCallback != null) {
mAnimationFinishedCallback.run();
}
}

View File

@@ -137,6 +137,19 @@ public class SurfaceAnimatorTest extends WindowTestsBase {
verify(mTransaction).remove(eq(mAnimatable.mLeash));
}
@Test
public void testCancelWithNullFinishCallbackAnimation() {
SurfaceAnimator animator = new SurfaceAnimator(mAnimatable, null, mWm);
animator.startAnimation(mTransaction, mSpec, true /* hidden */);
assertTrue(animator.isAnimating());
assertNotNull(animator.getAnimation());
animator.cancelAnimation();
assertFalse(animator.isAnimating());
assertNull(animator.getAnimation());
verify(mSpec).onAnimationCancelled(any());
verify(mTransaction).remove(eq(mAnimatable.mLeash));
}
@Test
public void testDelayingAnimationStart() {
mAnimatable.mSurfaceAnimator.startDelayingAnimationStart();