summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibWeb/HTML/HTMLLinkElement.cpp
diff options
context:
space:
mode:
authorAndreas Kling <kling@serenityos.org>2021-09-27 02:06:37 +0200
committerAndreas Kling <kling@serenityos.org>2021-09-27 02:07:55 +0200
commit5bb2e6597a038a9a8dc3de8df10ad92756487e3b (patch)
treeab8d6d2c8689cc743823a76ebd19750ef6e6d9ca /Userland/Libraries/LibWeb/HTML/HTMLLinkElement.cpp
parented5c807c99df9590c7883502d8e152fad6849e9b (diff)
downloadserenity-5bb2e6597a038a9a8dc3de8df10ad92756487e3b.zip
LibWeb: Preload resources hinted by <link rel="preload">
If a page is nice enough to give us some preload hints, we can tell RequestServer to get started on downloading the resources right away, instead of waiting until discovering them later on during parsing.
Diffstat (limited to 'Userland/Libraries/LibWeb/HTML/HTMLLinkElement.cpp')
-rw-r--r--Userland/Libraries/LibWeb/HTML/HTMLLinkElement.cpp9
1 files changed, 9 insertions, 0 deletions
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;
}
}
}