mirror of
https://github.com/LadybirdBrowser/ladybird
synced 2026-04-25 17:25:08 +02:00
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.
26 lines
705 B
HTML
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>
|