| <!DOCTYPE html> |
| <title>Cancel non accelerated property using worklet animation</title> |
| <link rel="help" href="https://drafts.css-houdini.org/css-animationworklet/"> |
| |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="/web-animations/testcommon.js"></script> |
| <script src="common.js"></script> |
| |
| <style> |
| #target { |
| background-color: red; |
| } |
| </style> |
| |
| <div id="target"></div> |
| |
| <script> |
| promise_test(async t => { |
| await registerConstantLocalTimeAnimator(1000); |
| const target = document.getElementById('target'); |
| const effect = new KeyframeEffect( |
| target, |
| [ |
| { background: 'green' }, |
| { background: 'blue' }, |
| ], |
| { |
| duration: 2000, |
| iteration: Infinity |
| } |
| ); |
| const animation = new WorkletAnimation('constant_time', effect); |
| animation.play(); |
| |
| await waitForAsyncAnimationFrames(1); |
| // establish that the animation started |
| assert_equals(getComputedStyle(target).backgroundColor, "rgb(0, 64, 128)"); |
| animation.cancel(); |
| |
| await waitForAsyncAnimationFrames(1); |
| // confirm the animation is cancelled |
| assert_equals(getComputedStyle(target).backgroundColor, "rgb(255, 0, 0)"); |
| }, "Animation should update the outputs after starting and then return to pre-animated values after being cancelled"); |
| </script> |