ladybird/Libraries/LibHTML/DOM/HTMLLinkElement.cpp
Andreas Kling 475c6d7112 LibHTML: Use ResourceLoader in HTMLLinkElement
This makes loading external stylesheets from http:// URLs work. :^)
2019-10-09 10:39:28 +02:00

35 lines
995 B
C++

#include <AK/URL.h>
#include <LibCore/CFile.h>
#include <LibHTML/DOM/Document.h>
#include <LibHTML/DOM/HTMLLinkElement.h>
#include <LibHTML/Parser/CSSParser.h>
#include <LibHTML/ResourceLoader.h>
HTMLLinkElement::HTMLLinkElement(Document& document, const String& tag_name)
: HTMLElement(document, tag_name)
{
}
HTMLLinkElement::~HTMLLinkElement()
{
}
void HTMLLinkElement::inserted_into(Node&)
{
if (rel() == "stylesheet") {
URL url = document().complete_url(href());
ResourceLoader::the().load(url, [&](auto data) {
if (data.is_null()) {
dbg() << "HTMLLinkElement: Failed to load stylesheet: " << href();
return;
}
auto sheet = parse_css(data);
if (!sheet) {
dbg() << "HTMLLinkElement: Failed to parse stylesheet: " << href();
return;
}
document().add_sheet(*sheet);
document().invalidate_layout();
});
}
}