WebContent: Correctly locate custom properties for pseudo-elements

We can't simply walk the element tree and pass in `pseudo_element` each
time. Instead, we want to look at:

1. Element's pseudo-element
2. Element
3. Element's parents
This commit is contained in:
Sam Atkins 2025-02-10 15:40:57 +00:00
parent 49b505e4ae
commit 7dbef8d3d5
Notes: github-actions[bot] 2025-02-12 13:49:48 +00:00

View file

@ -529,15 +529,20 @@ void ConnectionFromClient::inspect_dom_node(u64 page_id, Web::UniqueNodeID const
HashTable<FlyString> seen_properties; HashTable<FlyString> seen_properties;
auto const* element_to_check = &element; auto const* element_to_check = &element;
auto pseudo_element_to_check = pseudo_element;
while (element_to_check) { while (element_to_check) {
for (auto const& property : element_to_check->custom_properties(pseudo_element)) { for (auto const& property : element_to_check->custom_properties(pseudo_element_to_check)) {
if (!seen_properties.contains(property.key)) { if (!seen_properties.contains(property.key)) {
seen_properties.set(property.key); seen_properties.set(property.key);
MUST(serializer.add(property.key, property.value.value->to_string(Web::CSS::CSSStyleValue::SerializationMode::Normal))); MUST(serializer.add(property.key, property.value.value->to_string(Web::CSS::CSSStyleValue::SerializationMode::Normal)));
} }
} }
element_to_check = element_to_check->parent_element(); if (pseudo_element_to_check.has_value()) {
pseudo_element_to_check.clear();
} else {
element_to_check = element_to_check->parent_element();
}
} }
MUST(serializer.finish()); MUST(serializer.finish());