LibWeb: Inherit CSS variables across shadow boundaries

This fixes a bunch of issues on https://wpt.fyi/
This commit is contained in:
Andreas Kling 2024-07-25 21:04:39 +02:00 committed by Andreas Kling
parent cf6929fef3
commit de2b9eebe6
Notes: github-actions[bot] 2024-07-25 19:39:22 +00:00
3 changed files with 22 additions and 1 deletions

View file

@ -0,0 +1 @@
green rgb(0, 128, 0)

View file

@ -0,0 +1,20 @@
<style>
:root {
--foo: green;
}
</style>
<div id="myShadowHost">
<template shadowrootmode="open">
<style>
span { color: var(--foo, red); }
</style>
<span>green</span>
</template>
</div>
<script src="../include.js"></script>
<script>
test(() => {
let span = myShadowHost.shadowRoot.firstElementChild.nextElementSibling;
println(getComputedStyle(span).color);
});
</script>

View file

@ -7651,7 +7651,7 @@ static RefPtr<StyleValue const> get_custom_property(DOM::Element const& element,
return it->value.value;
}
for (auto const* current_element = &element; current_element; current_element = current_element->parent_element()) {
for (auto const* current_element = &element; current_element; current_element = current_element->parent_or_shadow_host_element()) {
if (auto it = current_element->custom_properties({}).find(custom_property_name); it != current_element->custom_properties({}).end())
return it->value.value;
}