diff options
| author | 2019-09-19 09:29:47 +0000 | |
|---|---|---|
| committer | 2019-09-19 09:29:47 +0000 | |
| commit | a4e35ce86196f2bb411241d0ad4f890055040b34 (patch) | |
| tree | b9384ba9b1301ff8536b7a5559887640f434e114 | |
| parent | b74b62d549d3fca27dcf7b4e631ce2e14d48eb32 (diff) | |
| parent | 9745f97572f247520c230ba91457fcfd9c56000d (diff) | |
Merge "Check nullity of finished callback"
| -rw-r--r-- | services/core/java/com/android/server/wm/SurfaceAnimator.java | 3 | ||||
| -rw-r--r-- | services/tests/wmtests/src/com/android/server/wm/SurfaceAnimatorTest.java | 13 |
2 files changed, 15 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/wm/SurfaceAnimator.java b/services/core/java/com/android/server/wm/SurfaceAnimator.java index cd211a28a908..ba728ba18d57 100644 --- a/services/core/java/com/android/server/wm/SurfaceAnimator.java +++ b/services/core/java/com/android/server/wm/SurfaceAnimator.java @@ -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(); } } diff --git a/services/tests/wmtests/src/com/android/server/wm/SurfaceAnimatorTest.java b/services/tests/wmtests/src/com/android/server/wm/SurfaceAnimatorTest.java index 340e7411d21e..2b1c4fff5861 100644 --- a/services/tests/wmtests/src/com/android/server/wm/SurfaceAnimatorTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/SurfaceAnimatorTest.java @@ -138,6 +138,19 @@ public class SurfaceAnimatorTest extends WindowTestsBase { } @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(); mAnimatable.mSurfaceAnimator.startAnimation(mTransaction, mSpec, true /* hidden */); |