From 5f10f8c54cebfc6f3b75fdab6562d86ec95ce494 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sun, 9 Feb 2025 12:16:15 +0100 Subject: [PATCH] LibWeb: Do includes_properties_from_invalidation_set() for :link & co Fixes #3511. --- Libraries/LibWeb/DOM/Element.cpp | 12 ++++++++++++ .../Crash/CSS/link-pseudo-class-invalidation.html | 13 +++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 Tests/LibWeb/Crash/CSS/link-pseudo-class-invalidation.html diff --git a/Libraries/LibWeb/DOM/Element.cpp b/Libraries/LibWeb/DOM/Element.cpp index 22b1ee4c5bd..3b4d2cde631 100644 --- a/Libraries/LibWeb/DOM/Element.cpp +++ b/Libraries/LibWeb/DOM/Element.cpp @@ -41,6 +41,8 @@ #include #include #include +#include +#include #include #include #include @@ -72,6 +74,7 @@ #include #include #include +#include #include #include #include @@ -1198,6 +1201,15 @@ bool Element::includes_properties_from_invalidation_set(CSS::InvalidationSet con // - FIXME: textarea elements that have a placeholder attribute whose value is currently being presented to the user. return false; } + case CSS::PseudoClass::AnyLink: + case CSS::PseudoClass::Link: + case CSS::PseudoClass::LocalLink: { + if (!is(*this) && !is(*this) && !is(*this)) + return false; + if (!has_attribute(HTML::AttributeNames::href)) + return false; + return true; + } default: VERIFY_NOT_REACHED(); } diff --git a/Tests/LibWeb/Crash/CSS/link-pseudo-class-invalidation.html b/Tests/LibWeb/Crash/CSS/link-pseudo-class-invalidation.html new file mode 100644 index 00000000000..1751dacb4c5 --- /dev/null +++ b/Tests/LibWeb/Crash/CSS/link-pseudo-class-invalidation.html @@ -0,0 +1,13 @@ + + + + +
    +