Files
ladybird/Tests/LibWeb/Text/input/wpt-import/css/css-view-transitions/no-raf-while-render-blocked.html
Psychpsyo 17e5289524 LibWeb: Suppress rendering due to view transitions
This also fixes a bug in the view transitions code that was
required to get the imported test to pass. The code for setting
the initial containing block size just did not set the right thing,
since doing so would trigger an error later on.

That later error resulted from walking up the tree, without
considering that the document element has a parent that is not
itself an element. (and then doing element things to it)
2025-09-09 10:25:17 +02:00

51 lines
1.3 KiB
HTML

<!DOCTYPE html>
<meta name="timeout" content="long">
<html>
<title>View transitions: rAF is not issued while render-blocked</title>
<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/">
<link rel="author" href="mailto:khushalsagar@chromium.org">
<script src="../../dom/events/scrolling/scroll_support.js"></script>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<style>
div {
width: 100px;
height: 100px;
background: blue;
contain: paint;
view-transition-name: target;
}
</style>
<div id=target></div>
<script>
let renderBlocked = true;
promise_test(async () => {
assert_implements(document.startViewTransition, "Missing document.startViewTransition");
await waitForCompositorReady();
return new Promise(async (resolve, reject) => {
requestAnimationFrame(() => {
document.startViewTransition(() => {
return new Promise(async (inner_resolve) => {
step_timeout(() => {
renderBlocked = false;
inner_resolve();
}, 1000);
});
});
requestAnimationFrame(() => {
if (renderBlocked)
reject();
else
resolve();
});
});
});
}, "rAF is blocked until prepare callback");
</script>