diff --git a/Userland/Libraries/LibWeb/HTML/HTMLLinkElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLLinkElement.cpp index 3d998776c96..9512c217490 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLLinkElement.cpp +++ b/Userland/Libraries/LibWeb/HTML/HTMLLinkElement.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -364,7 +365,9 @@ void HTMLLinkElement::default_fetch_and_process_linked_resource() process_linked_resource(success, response, body_bytes); }; - Fetch::Fetching::fetch(realm(), *request, Fetch::Infrastructure::FetchAlgorithms::create(vm(), move(fetch_algorithms_input))).release_value_but_fixme_should_propagate_errors(); + if (m_fetch_controller) + m_fetch_controller->abort(realm(), {}); + m_fetch_controller = MUST(Fetch::Fetching::fetch(realm(), *request, Fetch::Infrastructure::FetchAlgorithms::create(vm(), move(fetch_algorithms_input)))); } // https://html.spec.whatwg.org/multipage/links.html#link-type-stylesheet:process-the-linked-resource @@ -610,6 +613,7 @@ WebIDL::ExceptionOr HTMLLinkElement::load_fallback_favicon_if_needed(JS::N void HTMLLinkElement::visit_edges(Cell::Visitor& visitor) { Base::visit_edges(visitor); + visitor.visit(m_fetch_controller); visitor.visit(m_loaded_style_sheet); visitor.visit(m_rel_list); } diff --git a/Userland/Libraries/LibWeb/HTML/HTMLLinkElement.h b/Userland/Libraries/LibWeb/HTML/HTMLLinkElement.h index b2c50a1625d..0b6d69f3869 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLLinkElement.h +++ b/Userland/Libraries/LibWeb/HTML/HTMLLinkElement.h @@ -140,6 +140,8 @@ private: }; }; + JS::GCPtr m_fetch_controller; + JS::GCPtr m_loaded_style_sheet; Optional m_document_load_event_delayer;