Files
ladybird/Tests/LibWeb/Crash/CSS/animation-subtree-append-unstyled-child.html
Tim Ledbetter 06ee7bc532 LibWeb: Skip unstyled descendants in animation updates
Animation updates propagate inherited animated values by walking the
animated target's subtree and calling `recompute_inherited_style()` on
each element. Elements inserted during the same rendering update may
not have computed properties yet, which violates an existing assertion,
causing a crash.

Fix this by skipping unstyled descendants during this walk. The
subsequent recursive style update computes their style from scratch.
2026-04-22 10:14:47 +02:00

26 lines
705 B
HTML

<!DOCTYPE html>
<html class="test-wait">
<style>
@keyframes anim { from { opacity: 1 } to { opacity: 0.5 } }
#target { animation: anim 10s infinite; }
</style>
<div id="target"></div>
<script>
const animation = target.getAnimations()[0];
function waitForAnimationTick() {
if (animation.currentTime === null || animation.currentTime === 0) {
requestAnimationFrame(waitForAnimationTick);
return;
}
target.appendChild(document.createElement("div"));
requestAnimationFrame(() => {
document.documentElement.classList.remove("test-wait");
});
}
requestAnimationFrame(waitForAnimationTick);
</script>
</html>