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 @@ + + + + +
    +