diff --git a/Userland/Libraries/LibWeb/HTML/HTMLLinkElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLLinkElement.cpp index 1d3d24da6f..4811a8319f 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLLinkElement.cpp +++ b/Userland/Libraries/LibWeb/HTML/HTMLLinkElement.cpp @@ -36,6 +36,13 @@ void HTMLLinkElement::inserted() if (auto sheet = m_css_loader.style_sheet()) document().style_sheets().add_sheet(sheet.release_nonnull()); } + + if (m_relationship & Relationship::Preload) { + // FIXME: Respect the "as" attribute. + LoadRequest request; + request.set_url(attribute(HTML::AttributeNames::href)); + m_preload_resource = ResourceLoader::the().load_resource(Resource::Type::Generic, request); + } } void HTMLLinkElement::parse_attribute(const FlyString& name, const String& value) @@ -48,6 +55,8 @@ void HTMLLinkElement::parse_attribute(const FlyString& name, const String& value m_relationship |= Relationship::Stylesheet; else if (part == "alternate") m_relationship |= Relationship::Alternate; + else if (part == "preload") + m_relationship |= Relationship::Preload; } } } diff --git a/Userland/Libraries/LibWeb/HTML/HTMLLinkElement.h b/Userland/Libraries/LibWeb/HTML/HTMLLinkElement.h index 7c0a88fa36..aebd3a38d1 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLLinkElement.h +++ b/Userland/Libraries/LibWeb/HTML/HTMLLinkElement.h @@ -32,9 +32,12 @@ private: enum { Alternate = 1 << 0, Stylesheet = 1 << 1, + Preload = 1 << 2, }; }; + RefPtr m_preload_resource; + CSSLoader m_css_loader; unsigned m_relationship { 0 }; };