From d35b97317051f7e14fccdf316f82b44b4074963b Mon Sep 17 00:00:00 2001 From: George Mount Date: Mon, 17 Apr 2023 15:30:43 -0700 Subject: [PATCH] Add test for regression in Animators Fixes: 278484989 When a ValueAnimator is started, it can be started again to start from the beginning. Test: new test Change-Id: Ic2351d8a49c079adea55b46632b8624e17f8755a --- .../android/animation/ValueAnimatorTests.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/core/tests/coretests/src/android/animation/ValueAnimatorTests.java b/core/tests/coretests/src/android/animation/ValueAnimatorTests.java index a53d57f0383c2..a102b3ed99719 100644 --- a/core/tests/coretests/src/android/animation/ValueAnimatorTests.java +++ b/core/tests/coretests/src/android/animation/ValueAnimatorTests.java @@ -1127,6 +1127,31 @@ public class ValueAnimatorTests { mActivityRule.runOnUiThread(() -> {}); } + @Test + public void restartValueAnimator() throws Throwable { + CountDownLatch latch = new CountDownLatch(1); + ValueAnimator.AnimatorUpdateListener listener = new ValueAnimator.AnimatorUpdateListener() { + @Override + public void onAnimationUpdate(ValueAnimator animation) { + if (((float) animation.getAnimatedValue()) != A1_START_VALUE) { + latch.countDown(); + } + } + }; + a1.addUpdateListener(listener); + + mActivityRule.runOnUiThread(() -> { + a1.start(); + }); + + // wait for a change in the value + assertTrue(latch.await(2, TimeUnit.SECONDS)); + + mActivityRule.runOnUiThread(() -> { + a1.start(); + assertEquals(A1_START_VALUE, a1.getAnimatedValue()); + }); + } class MyUpdateListener implements ValueAnimator.AnimatorUpdateListener { boolean wasRunning = false; long firstRunningFrameTime = -1;