| <!DOCTYPE html> | |
| <title>Worklet Animation with options</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> | |
| <div id="target"></div> | |
| <script id="animate_with_options" type="text/worklet"> | |
| registerAnimator("test_animator", class { | |
| constructor(options) { | |
| this.time_ = options.time; | |
| } | |
| animate(currentTime, effect) { | |
| effect.localTime = this.time_; | |
| } | |
| }); | |
| </script> | |
| <script> | |
| promise_test(async t => { | |
| await runInAnimationWorklet(document.getElementById('animate_with_options').textContent); | |
| const target = document.getElementById('target'); | |
| const effect = new KeyframeEffect(target, [{ opacity: 0 }], { duration: 1000 }); | |
| const options = {'time': 500}; | |
| const animation = new WorkletAnimation('test_animator', effect, document.timeline, options); | |
| animation.play(); | |
| // wait until local times are synced back to the main thread. | |
| await waitForAnimationFrameWithCondition(_ => { | |
| return getComputedStyle(target).opacity != '1'; | |
| }); | |
| assert_equals(getComputedStyle(target).opacity, "0.5"); | |
| }, "Animator should be able to use options to update the animation"); | |
| </script> |