add support for link rel="preload" for --get-assets

parent 025ec851
...@@ -55,6 +55,22 @@ StringRef get_attr(const xmlChar **attrs, const StringRef &name) { ...@@ -55,6 +55,22 @@ StringRef get_attr(const xmlChar **attrs, const StringRef &name) {
} }
} // namespace } // namespace
namespace {
ResourceType get_resource_type_for_preload_as(const StringRef &attribute_value) {
if (util::strieq_l("image", attribute_value)) {
return REQ_IMG;
} else if (util::strieq_l("style", attribute_value)) {
return REQ_CSS;
} else if (util::strieq_l("script", attribute_value)) {
return REQ_UNBLOCK_JS;
} else {
return REQ_OTHERS;
}
}
} // namespace
namespace { namespace {
void add_link(ParserData *parser_data, const StringRef &uri, void add_link(ParserData *parser_data, const StringRef &uri,
ResourceType res_type) { ResourceType res_type) {
...@@ -88,6 +104,12 @@ void start_element_func(void *user_data, const xmlChar *src_name, ...@@ -88,6 +104,12 @@ void start_element_func(void *user_data, const xmlChar *src_name,
add_link(parser_data, href_attr, REQ_OTHERS); add_link(parser_data, href_attr, REQ_OTHERS);
} else if (util::strieq_l("stylesheet", rel_attr)) { } else if (util::strieq_l("stylesheet", rel_attr)) {
add_link(parser_data, href_attr, REQ_CSS); add_link(parser_data, href_attr, REQ_CSS);
} else if (util::strieq_l("preload", rel_attr)) {
auto as_attr = get_attr(attrs, StringRef::from_lit("as"));
if (as_attr.empty()) {
return;
}
add_link(parser_data, href_attr, get_resource_type_for_preload_as(as_attr));
} }
} else if (util::strieq_l("img", name)) { } else if (util::strieq_l("img", name)) {
auto src_attr = get_attr(attrs, StringRef::from_lit("src")); auto src_attr = get_attr(attrs, StringRef::from_lit("src"));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment