From 9f75e2638552be173d825a4ad02f70a0285d6f65 Mon Sep 17 00:00:00 2001 From: Aliaksandr Kalenik Date: Sat, 25 Jan 2025 20:02:05 +0100 Subject: [PATCH] LibWeb: Add missing handler in affected_by_invalidation_property() ...for :placeholder-shown pseudo-class. --- Libraries/LibWeb/DOM/Element.cpp | 8 ++++++ ...aceholder-shown-used-on-nested-element.txt | 1 + ...ceholder-shown-used-on-nested-element.html | 25 +++++++++++++++++++ 3 files changed, 34 insertions(+) create mode 100644 Tests/LibWeb/Text/expected/invalidate-style-of-element-with-placeholder-shown-used-on-nested-element.txt create mode 100644 Tests/LibWeb/Text/input/invalidate-style-of-element-with-placeholder-shown-used-on-nested-element.html diff --git a/Libraries/LibWeb/DOM/Element.cpp b/Libraries/LibWeb/DOM/Element.cpp index d61245d81b5..61f54cea28e 100644 --- a/Libraries/LibWeb/DOM/Element.cpp +++ b/Libraries/LibWeb/DOM/Element.cpp @@ -1169,6 +1169,14 @@ bool Element::affected_by_invalidation_property(CSS::InvalidationSet::Property c // FIXME: This could be narrowed down to return true only if element is actually checked. return is(*this) || is(*this); } + case CSS::PseudoClass::PlaceholderShown: { + if (is(*this) && has_attribute(HTML::AttributeNames::placeholder)) { + auto const& input_element = static_cast(*this); + return input_element.placeholder_element() && input_element.placeholder_value().has_value(); + } + // - FIXME: textarea elements that have a placeholder attribute whose value is currently being presented to the user. + return false; + } default: VERIFY_NOT_REACHED(); } diff --git a/Tests/LibWeb/Text/expected/invalidate-style-of-element-with-placeholder-shown-used-on-nested-element.txt b/Tests/LibWeb/Text/expected/invalidate-style-of-element-with-placeholder-shown-used-on-nested-element.txt new file mode 100644 index 00000000000..aaecaf93c4a --- /dev/null +++ b/Tests/LibWeb/Text/expected/invalidate-style-of-element-with-placeholder-shown-used-on-nested-element.txt @@ -0,0 +1 @@ +PASS (didn't crash) diff --git a/Tests/LibWeb/Text/input/invalidate-style-of-element-with-placeholder-shown-used-on-nested-element.html b/Tests/LibWeb/Text/input/invalidate-style-of-element-with-placeholder-shown-used-on-nested-element.html new file mode 100644 index 00000000000..1213b0e9306 --- /dev/null +++ b/Tests/LibWeb/Text/input/invalidate-style-of-element-with-placeholder-shown-used-on-nested-element.html @@ -0,0 +1,25 @@ + + + + + + + + +
+ + + + \ No newline at end of file