summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Vadim Caen <caen@google.com> 2019-09-19 09:29:47 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2019-09-19 09:29:47 +0000
commita4e35ce86196f2bb411241d0ad4f890055040b34 (patch)
treeb9384ba9b1301ff8536b7a5559887640f434e114
parentb74b62d549d3fca27dcf7b4e631ce2e14d48eb32 (diff)
parent9745f97572f247520c230ba91457fcfd9c56000d (diff)
Merge "Check nullity of finished callback"
-rw-r--r--services/core/java/com/android/server/wm/SurfaceAnimator.java3
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/SurfaceAnimatorTest.java13
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 */);