diff --git a/Userland/Libraries/LibWeb/HTML/HTMLLinkElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLLinkElement.cpp
index acebc098f8..722e2b2508 100644
--- a/Userland/Libraries/LibWeb/HTML/HTMLLinkElement.cpp
+++ b/Userland/Libraries/LibWeb/HTML/HTMLLinkElement.cpp
@@ -55,9 +55,15 @@ void HTMLLinkElement::inserted()
void HTMLLinkElement::parse_attribute(FlyString const& name, String const& value)
{
+ // 4.6.7 Link types - https://html.spec.whatwg.org/multipage/links.html#linkTypes
if (name == HTML::AttributeNames::rel) {
m_relationship = 0;
- auto parts = value.split_view(' ');
+ // Keywords are always ASCII case-insensitive, and must be compared as such.
+ auto lowercased_value = value.to_lowercase();
+ // To determine which link types apply to a link, a, area, or form element,
+ // the element's rel attribute must be split on ASCII whitespace.
+ // The resulting tokens are the keywords for the link types that apply to that element.
+ auto parts = lowercased_value.split_view(' ');
for (auto& part : parts) {
if (part == "stylesheet"sv)
m_relationship |= Relationship::Stylesheet;
@@ -69,6 +75,8 @@ void HTMLLinkElement::parse_attribute(FlyString const& name, String const& value
m_relationship |= Relationship::DNSPrefetch;
else if (part == "preconnect"sv)
m_relationship |= Relationship::Preconnect;
+ else if (part == "icon"sv)
+ m_relationship |= Relationship::Icon;
}
}
}
diff --git a/Userland/Libraries/LibWeb/HTML/HTMLLinkElement.h b/Userland/Libraries/LibWeb/HTML/HTMLLinkElement.h
index f033b27d0a..eab494ad09 100644
--- a/Userland/Libraries/LibWeb/HTML/HTMLLinkElement.h
+++ b/Userland/Libraries/LibWeb/HTML/HTMLLinkElement.h
@@ -42,6 +42,7 @@ private:
Preload = 1 << 2,
DNSPrefetch = 1 << 3,
Preconnect = 1 << 4,
+ Icon = 1 << 5,
};
};