diff --git a/Userland/Libraries/LibWeb/HTML/HTMLScriptElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLScriptElement.cpp index d8293ef101..07ae682620 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLScriptElement.cpp +++ b/Userland/Libraries/LibWeb/HTML/HTMLScriptElement.cpp @@ -224,10 +224,12 @@ void HTMLScriptElement::prepare_script() } if (m_script_type == ScriptType::Classic) { + auto request = LoadRequest::create_for_url_on_page(url, document().page()); + // FIXME: This load should be made asynchronous and the parser should spin an event loop etc. m_script_filename = url.basename(); ResourceLoader::the().load_sync( - url, + request, [this, url](auto data, auto&, auto) { if (data.is_null()) { dbgln("HTMLScriptElement: Failed to load {}", url); diff --git a/Userland/Libraries/LibWeb/Loader/ResourceLoader.cpp b/Userland/Libraries/LibWeb/Loader/ResourceLoader.cpp index cd3aaeed2d..7d20b25d1d 100644 --- a/Userland/Libraries/LibWeb/Loader/ResourceLoader.cpp +++ b/Userland/Libraries/LibWeb/Loader/ResourceLoader.cpp @@ -52,12 +52,12 @@ ResourceLoader::ResourceLoader() { } -void ResourceLoader::load_sync(const URL& url, Function& response_headers, Optional status_code)> success_callback, Function status_code)> error_callback) +void ResourceLoader::load_sync(const LoadRequest& request, Function& response_headers, Optional status_code)> success_callback, Function status_code)> error_callback) { Core::EventLoop loop; load( - url, + request, [&](auto data, auto& response_headers, auto status_code) { success_callback(data, response_headers, status_code); loop.quit(0); diff --git a/Userland/Libraries/LibWeb/Loader/ResourceLoader.h b/Userland/Libraries/LibWeb/Loader/ResourceLoader.h index 74ac265f72..7eb263e8b7 100644 --- a/Userland/Libraries/LibWeb/Loader/ResourceLoader.h +++ b/Userland/Libraries/LibWeb/Loader/ResourceLoader.h @@ -48,7 +48,7 @@ public: void load(const LoadRequest&, Function& response_headers, Optional status_code)> success_callback, Function status_code)> error_callback = nullptr); void load(const URL&, Function& response_headers, Optional status_code)> success_callback, Function status_code)> error_callback = nullptr); - void load_sync(const URL&, Function& response_headers, Optional status_code)> success_callback, Function status_code)> error_callback = nullptr); + void load_sync(const LoadRequest&, Function& response_headers, Optional status_code)> success_callback, Function status_code)> error_callback = nullptr); Function on_load_counter_change; diff --git a/Userland/Utilities/test-web.cpp b/Userland/Utilities/test-web.cpp index 48d6027afb..e03445204a 100644 --- a/Userland/Utilities/test-web.cpp +++ b/Userland/Utilities/test-web.cpp @@ -209,8 +209,11 @@ void TestRunner::run() // give a new parser the existing document to work on. m_page_view->document()->remove_all_children(); + Web::LoadRequest request; + request.set_url(page_to_load); + Web::ResourceLoader::the().load_sync( - page_to_load, + request, [&](auto data, auto&, auto) { Web::HTML::HTMLDocumentParser parser(*m_page_view->document(), data, "utf-8"); parser.run(page_to_load); @@ -315,8 +318,11 @@ JSFileResult TestRunner::run_file_test(const String& test_path) JSFileResult file_result; + Web::LoadRequest request; + request.set_url(page_to_load); + Web::ResourceLoader::the().load_sync( - page_to_load, + request, [&](auto data, auto&, auto) { // Create a new parser and immediately get its document to replace the old interpreter. auto document = Web::DOM::Document::create();