From 7dbef8d3d5fd177ed55a62c1d94b1ece0bce680f Mon Sep 17 00:00:00 2001 From: Sam Atkins Date: Mon, 10 Feb 2025 15:40:57 +0000 Subject: [PATCH] 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 --- Services/WebContent/ConnectionFromClient.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Services/WebContent/ConnectionFromClient.cpp b/Services/WebContent/ConnectionFromClient.cpp index bf6710e313..160a7eb1d4 100644 --- a/Services/WebContent/ConnectionFromClient.cpp +++ b/Services/WebContent/ConnectionFromClient.cpp @@ -529,15 +529,20 @@ void ConnectionFromClient::inspect_dom_node(u64 page_id, Web::UniqueNodeID const HashTable seen_properties; auto const* element_to_check = &element; + auto pseudo_element_to_check = pseudo_element; 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)) { seen_properties.set(property.key); 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());