48 lines
1.6 KiB
HTML
48 lines
1.6 KiB
HTML
<!DOCTYPE html>
|
|
<title>Worklet animation can animate effects from different frames</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="common.js"></script>
|
|
|
|
<div id="box"></div>
|
|
|
|
<script id="simple_animate" type="text/worklet">
|
|
registerAnimator("test_animator", class {
|
|
animate(currentTime, effect) {
|
|
let effects = effect.getChildren();
|
|
effects[0].localTime = 500;
|
|
effects[1].localTime = 750;
|
|
}
|
|
});
|
|
</script>
|
|
|
|
<script>
|
|
promise_test(async t => {
|
|
await runInAnimationWorklet(document.getElementById('simple_animate').textContent);
|
|
const effect = new KeyframeEffect(box, [{ opacity: 0 }], { duration: 1000 });
|
|
|
|
let iframe = document.createElement('iframe');
|
|
iframe.src = 'resources/iframe.html';
|
|
document.body.appendChild(iframe);
|
|
|
|
await waitForAnimationFrameWithCondition(_ => {
|
|
return iframe.contentDocument.getElementById('iframe_box') != null;
|
|
});
|
|
let iframe_box = iframe.contentDocument.getElementById('iframe_box');
|
|
let iframe_effect = new KeyframeEffect(
|
|
iframe_box, [{ opacity: 0 }], { duration: 1000 }
|
|
);
|
|
|
|
const animation = new WorkletAnimation('test_animator', [effect, iframe_effect]);
|
|
animation.play();
|
|
|
|
await waitForNotNullLocalTime(animation);
|
|
assert_equals(getComputedStyle(box).opacity, '0.5');
|
|
assert_equals(getComputedStyle(iframe_box).opacity, '0.25');
|
|
|
|
iframe.remove();
|
|
animation.cancel();
|
|
}, "Effects from different documents can be animated within one worklet animation");
|
|
</script>
|