summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Paul Sowden <paulsowden@google.com> 2024-01-09 21:43:49 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2024-01-09 21:43:49 +0000
commit1d35a3c6cb2bcf98c60715f0f408d70d0ec0c46c (patch)
tree1e28d94541cde5b8e0c99dce6d9e86a39e51a404
parent50f308d874e3511dd6a1497db5f928e241903527 (diff)
parentcd05afa60620d402c818965e0a9c5d0df6374dc1 (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.java5
-rw-r--r--core/tests/coretests/src/android/animation/AnimatorSetCallsTest.java15
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() {