LibWeb: Don't store Page on ResourceLoader

We only need a Page for file:// urls. At some point we probably
needed it for other kinds of requests, but the current functionality
doesn't need to store the Page pointer on the ResourceLoader.
This commit is contained in:
Andrew Kaster 2025-01-15 15:06:39 -07:00 committed by Andrew Kaster
commit 8760825bb4
Notes: github-actions[bot] 2025-02-18 18:37:01 +00:00
4 changed files with 11 additions and 7 deletions

View file

@ -27,6 +27,7 @@
#include <LibGfx/Font/WOFF2/Loader.h> #include <LibGfx/Font/WOFF2/Loader.h>
#include <LibWeb/Animations/AnimationEffect.h> #include <LibWeb/Animations/AnimationEffect.h>
#include <LibWeb/Animations/DocumentTimeline.h> #include <LibWeb/Animations/DocumentTimeline.h>
#include <LibWeb/Bindings/PrincipalHostDefined.h>
#include <LibWeb/CSS/AnimationEvent.h> #include <LibWeb/CSS/AnimationEvent.h>
#include <LibWeb/CSS/CSSAnimation.h> #include <LibWeb/CSS/CSSAnimation.h>
#include <LibWeb/CSS/CSSFontFaceRule.h> #include <LibWeb/CSS/CSSFontFaceRule.h>
@ -242,8 +243,12 @@ void FontLoader::start_loading_next_url()
return; return;
if (m_urls.is_empty()) if (m_urls.is_empty())
return; return;
auto& style_computer_realm = m_style_computer.document().realm();
auto& page = Bindings::principal_host_defined_page(HTML::principal_realm(style_computer_realm));
LoadRequest request; LoadRequest request;
request.set_url(m_urls.take_first()); request.set_url(m_urls.take_first());
request.set_page(page);
// HACK: We're crudely computing the referer value and shoving it into the // HACK: We're crudely computing the referer value and shoving it into the
// request until fetch infrastructure is used here. // request until fetch infrastructure is used here.

View file

@ -12,6 +12,7 @@
#include <LibTextCodec/Decoder.h> #include <LibTextCodec/Decoder.h>
#include <LibURL/URL.h> #include <LibURL/URL.h>
#include <LibWeb/Bindings/HTMLLinkElementPrototype.h> #include <LibWeb/Bindings/HTMLLinkElementPrototype.h>
#include <LibWeb/Bindings/PrincipalHostDefined.h>
#include <LibWeb/CSS/Parser/Parser.h> #include <LibWeb/CSS/Parser/Parser.h>
#include <LibWeb/DOM/DOMTokenList.h> #include <LibWeb/DOM/DOMTokenList.h>
#include <LibWeb/DOM/Document.h> #include <LibWeb/DOM/Document.h>
@ -81,6 +82,7 @@ void HTMLLinkElement::inserted()
// FIXME: Respect the "as" attribute. // FIXME: Respect the "as" attribute.
LoadRequest request; LoadRequest request;
request.set_url(maybe_href.value()); request.set_url(maybe_href.value());
request.set_page(Bindings::principal_host_defined_page(HTML::principal_realm(realm())));
set_resource(ResourceLoader::the().load_resource(Resource::Type::Generic, request)); set_resource(ResourceLoader::the().load_resource(Resource::Type::Generic, request));
} }
} else if (m_relationship & Relationship::DNSPrefetch) { } else if (m_relationship & Relationship::DNSPrefetch) {

View file

@ -334,11 +334,9 @@ void ResourceLoader::load(LoadRequest& request, GC::Root<SuccessCallback> succes
} }
if (url.scheme() == "file") { if (url.scheme() == "file") {
if (request.page()) auto page = request.page();
m_page = request.page(); if (!page) {
log_failure(request, "INTERNAL ERROR: No Page for file scheme request");
if (!m_page.has_value()) {
log_failure(request, "INTERNAL ERROR: No Page for request");
return; return;
} }
@ -396,7 +394,7 @@ void ResourceLoader::load(LoadRequest& request, GC::Root<SuccessCallback> succes
success_callback->function()(data, response_headers, {}, {}); success_callback->function()(data, response_headers, {}, {});
}); });
(*m_page)->client().request_file(move(file_request)); page->client().request_file(move(file_request));
++m_pending_loads; ++m_pending_loads;
if (on_load_counter_change) if (on_load_counter_change)

View file

@ -93,7 +93,6 @@ private:
Vector<String> m_preferred_languages = { "en"_string }; Vector<String> m_preferred_languages = { "en"_string };
NavigatorCompatibilityMode m_navigator_compatibility_mode; NavigatorCompatibilityMode m_navigator_compatibility_mode;
bool m_enable_do_not_track { false }; bool m_enable_do_not_track { false };
Optional<GC::Ptr<Page>> m_page {};
}; };
} }