HTMLLinkElement.cpp 990 B

1234567891011121314151617181920212223242526272829303132333435
  1. #include <AK/URL.h>
  2. #include <LibCore/CFile.h>
  3. #include <LibHTML/DOM/Document.h>
  4. #include <LibHTML/DOM/HTMLLinkElement.h>
  5. #include <LibHTML/Parser/CSSParser.h>
  6. #include <LibHTML/ResourceLoader.h>
  7. HTMLLinkElement::HTMLLinkElement(Document& document, const String& tag_name)
  8. : HTMLElement(document, tag_name)
  9. {
  10. }
  11. HTMLLinkElement::~HTMLLinkElement()
  12. {
  13. }
  14. void HTMLLinkElement::inserted_into(Node&)
  15. {
  16. if (rel() == "stylesheet") {
  17. URL url = document().complete_url(href());
  18. ResourceLoader::the().load(url, [&](auto data) {
  19. if (data.is_null()) {
  20. dbg() << "HTMLLinkElement: Failed to load stylesheet: " << href();
  21. return;
  22. }
  23. auto sheet = parse_css(data);
  24. if (!sheet) {
  25. dbg() << "HTMLLinkElement: Failed to parse stylesheet: " << href();
  26. return;
  27. }
  28. document().add_sheet(*sheet);
  29. document().update_style();
  30. });
  31. }
  32. }