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 };
};