61 lines
1.9 KiB
HTML
61 lines
1.9 KiB
HTML
<!DOCTYPE html>
|
|
<title>Test that AnimationWorklet inside frames with different origin causes new global scopes</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>
|
|
.redbox {
|
|
width: 100px;
|
|
height: 100px;
|
|
background-color: #ff0000;
|
|
}
|
|
</style>
|
|
|
|
<div id="target" class="redbox"></div>
|
|
|
|
<script id="main_worklet" type="text/worklet">
|
|
registerAnimator("duplicate_animator", class {
|
|
animate(currentTime, effect) {
|
|
effect.localTime = 500;
|
|
}
|
|
});
|
|
</script>
|
|
|
|
<script>
|
|
async_test(t => {
|
|
// Wait for iframe to load and start its animations.
|
|
window.onmessage = function(msg) {
|
|
window.requestAnimationFrame( _ => {
|
|
run_test(msg.data);
|
|
});
|
|
};
|
|
|
|
// Create and load the iframe to avoid racy cases.
|
|
var iframe = document.createElement('iframe');
|
|
iframe.src = 'resources/animator-iframe.html';
|
|
document.body.appendChild(iframe);
|
|
|
|
function run_test(data) {
|
|
runInAnimationWorklet(
|
|
document.getElementById('main_worklet').textContent
|
|
).then(_ => {
|
|
// Create an animation for duplicate animator.
|
|
const target = document.getElementById('target');
|
|
const animation = new WorkletAnimation('duplicate_animator', new KeyframeEffect(target, [{ opacity: 0 }], { duration: 1000 }));
|
|
animation.play();
|
|
|
|
assert_equals(data, '0.4');
|
|
|
|
// wait until local times are synced back to the main thread.
|
|
waitForAnimationFrameWithCondition(_ => {
|
|
return getComputedStyle(target).opacity != '1';
|
|
}).then(t.step_func_done(() => {
|
|
assert_equals(getComputedStyle(target).opacity, '0.5');
|
|
}));
|
|
});
|
|
}
|
|
}, 'Both main frame and iframe should update the opacity of their target');
|
|
</script>
|