diff options
| author | 2024-01-09 21:43:49 +0000 | |
|---|---|---|
| committer | 2024-01-09 21:43:49 +0000 | |
| commit | 1d35a3c6cb2bcf98c60715f0f408d70d0ec0c46c (patch) | |
| tree | 1e28d94541cde5b8e0c99dce6d9e86a39e51a404 | |
| parent | 50f308d874e3511dd6a1497db5f928e241903527 (diff) | |
| parent | cd05afa60620d402c818965e0a9c5d0df6374dc1 (diff) | |
Merge "Only set `mEnded` to true if `pulseAnimationFrame` returns true" into main am: c2076853fe am: cd05afa606
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/2871506
Change-Id: I5de7d1bdba1e2cc3de5827f06fe8076c51a0df90
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
| -rw-r--r-- | core/java/android/animation/AnimatorSet.java | 5 | ||||
| -rw-r--r-- | core/tests/coretests/src/android/animation/AnimatorSetCallsTest.java | 15 |
2 files changed, 18 insertions, 2 deletions
diff --git a/core/java/android/animation/AnimatorSet.java b/core/java/android/animation/AnimatorSet.java index f33d2991329a..4823f447f22b 100644 --- a/core/java/android/animation/AnimatorSet.java +++ b/core/java/android/animation/AnimatorSet.java @@ -1311,8 +1311,9 @@ public final class AnimatorSet extends Animator implements AnimationHandler.Anim if (!node.mEnded) { float durationScale = ValueAnimator.getDurationScale(); durationScale = durationScale == 0 ? 1 : durationScale; - node.mEnded = node.mAnimation.pulseAnimationFrame( - (long) (animPlayTime * durationScale)); + if (node.mAnimation.pulseAnimationFrame((long) (animPlayTime * durationScale))) { + node.mEnded = true; + } } } diff --git a/core/tests/coretests/src/android/animation/AnimatorSetCallsTest.java b/core/tests/coretests/src/android/animation/AnimatorSetCallsTest.java index 43266a51502b..cb3f99c37a4f 100644 --- a/core/tests/coretests/src/android/animation/AnimatorSetCallsTest.java +++ b/core/tests/coretests/src/android/animation/AnimatorSetCallsTest.java @@ -17,6 +17,7 @@ package android.animation; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import android.util.PollingCheck; @@ -343,6 +344,20 @@ public class AnimatorSetCallsTest { } @Test + public void childAnimatorCancelsDuringUpdate_animatorSetIsEnded() throws Throwable { + mAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { + @Override + public void onAnimationUpdate(ValueAnimator animation) { + animation.cancel(); + } + }); + mActivity.runOnUiThread(() -> { + mSet1.start(); + assertFalse(mSet1.isRunning()); + }); + } + + @Test public void reentrantStart() throws Throwable { CountDownLatch latch = new CountDownLatch(3); AnimatorListenerAdapter listener = new AnimatorListenerAdapter() { |