mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-23 04:55:15 +00:00
LibHTML: Use ResourceLoader in HTMLLinkElement
This makes loading external stylesheets from http:// URLs work. :^)
This commit is contained in:
parent
75b5638f1c
commit
475c6d7112
Notes:
sideshowbarker
2024-07-19 11:44:59 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/475c6d7112e
1 changed files with 14 additions and 20 deletions
|
@ -3,6 +3,7 @@
|
|||
#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)
|
||||
|
@ -17,25 +18,18 @@ void HTMLLinkElement::inserted_into(Node&)
|
|||
{
|
||||
if (rel() == "stylesheet") {
|
||||
URL url = document().complete_url(href());
|
||||
if (url.protocol() != "file") {
|
||||
ASSERT_NOT_REACHED();
|
||||
}
|
||||
auto file = CFile::construct(url.path());
|
||||
if (!file->open(CIODevice::ReadOnly)) {
|
||||
dbg() << "Failed to open " << url.to_string();
|
||||
ASSERT_NOT_REACHED();
|
||||
return;
|
||||
}
|
||||
auto data = file->read_all();
|
||||
auto sheet = parse_css(data);
|
||||
|
||||
if (!sheet) {
|
||||
dbg() << "Failed to parse " << url.to_string();
|
||||
ASSERT_NOT_REACHED();
|
||||
return;
|
||||
}
|
||||
|
||||
document().add_sheet(*sheet);
|
||||
document().invalidate_layout();
|
||||
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();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue