diff --git a/Userland/Libraries/LibWeb/HTML/HTMLScriptElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLScriptElement.cpp
index 45d310c7a3..64d0d11a2b 100644
--- a/Userland/Libraries/LibWeb/HTML/HTMLScriptElement.cpp
+++ b/Userland/Libraries/LibWeb/HTML/HTMLScriptElement.cpp
@@ -350,7 +350,7 @@ void HTMLScriptElement::prepare_script()
else if (m_script_type == ScriptType::Module) {
// Fetch an external module script graph given url, settings object, options, and onComplete.
// FIXME: Pass options.
- fetch_external_module_script_graph(url, settings_object, [this](auto* result) {
+ fetch_external_module_script_graph(url, settings_object, [this](auto result) {
// 1. Mark as ready el given result.
if (!result)
mark_as_ready(ResultState::Null {});
@@ -382,7 +382,7 @@ void HTMLScriptElement::prepare_script()
// 2. Fetch an inline module script graph, given source text, base URL, settings object, options, and with the following steps given result:
// FIXME: Pass options
- fetch_inline_module_script_graph(m_document->url().to_deprecated_string(), source_text, base_url, document().relevant_settings_object(), [this](auto* result) {
+ fetch_inline_module_script_graph(m_document->url().to_deprecated_string(), source_text, base_url, document().relevant_settings_object(), [this](auto result) {
// 1. Mark as ready el given result.
if (!result)
mark_as_ready(ResultState::Null {});
diff --git a/Userland/Libraries/LibWeb/HTML/Scripting/Fetching.cpp b/Userland/Libraries/LibWeb/HTML/Scripting/Fetching.cpp
index 116adb22e0..0936afac55 100644
--- a/Userland/Libraries/LibWeb/HTML/Scripting/Fetching.cpp
+++ b/Userland/Libraries/LibWeb/HTML/Scripting/Fetching.cpp
@@ -211,7 +211,7 @@ Optional resolve_url_like_module_specifier(DeprecatedString const& spec
}
// https://html.spec.whatwg.org/multipage/webappapis.html#internal-module-script-graph-fetching-procedure
-void fetch_internal_module_script_graph(JS::ModuleRequest const& module_request, EnvironmentSettingsObject& fetch_client_settings_object, StringView destination, Script& referring_script, HashTable const& visited_set, ModuleCallback on_complete)
+void fetch_internal_module_script_graph(JS::ModuleRequest const& module_request, EnvironmentSettingsObject& fetch_client_settings_object, StringView destination, Script& referring_script, HashTable const& visited_set, OnFetchScriptComplete on_complete)
{
// 1. Let url be the result of resolving a module specifier given referringScript and moduleRequest.[[Specifier]].
auto url = MUST(resolve_module_specifier(referring_script, module_request.module_specifier));
@@ -228,7 +228,7 @@ void fetch_internal_module_script_graph(JS::ModuleRequest const& module_request,
// 5. Fetch a single module script given url, fetch client settings object, destination, options, referringScript's settings object,
// referringScript's base URL, moduleRequest, false, and onSingleFetchComplete as defined below. If performFetch was given, pass it along as well.
// FIXME: Pass options and performFetch if given.
- fetch_single_module_script(url, fetch_client_settings_object, destination, referring_script.settings_object(), referring_script.base_url(), module_request, TopLevelModule::No, [on_complete = move(on_complete), &fetch_client_settings_object, destination, visited_set](auto* result) mutable {
+ fetch_single_module_script(url, fetch_client_settings_object, destination, referring_script.settings_object(), referring_script.base_url(), module_request, TopLevelModule::No, [on_complete = move(on_complete), &fetch_client_settings_object, destination, visited_set](auto result) mutable {
// onSingleFetchComplete given result is the following algorithm:
// 1. If result is null, run onComplete with null, and abort these steps.
if (!result) {
@@ -238,12 +238,13 @@ void fetch_internal_module_script_graph(JS::ModuleRequest const& module_request,
// 2. Fetch the descendants of result given fetch client settings object, destination, visited set, and with onComplete. If performFetch was given, pass it along as well.
// FIXME: Pass performFetch if given.
- fetch_descendants_of_a_module_script(*result, fetch_client_settings_object, destination, visited_set, move(on_complete));
+ auto& module_script = verify_cast(*result);
+ fetch_descendants_of_a_module_script(module_script, fetch_client_settings_object, destination, visited_set, move(on_complete));
});
}
// https://html.spec.whatwg.org/multipage/webappapis.html#fetch-the-descendants-of-a-module-script
-void fetch_descendants_of_a_module_script(JavaScriptModuleScript& module_script, EnvironmentSettingsObject& fetch_client_settings_object, StringView destination, HashTable visited_set, ModuleCallback on_complete)
+void fetch_descendants_of_a_module_script(JavaScriptModuleScript& module_script, EnvironmentSettingsObject& fetch_client_settings_object, StringView destination, HashTable visited_set, OnFetchScriptComplete on_complete)
{
// 1. If module script's record is null, run onComplete with module script and return.
if (!module_script.record()) {
@@ -309,7 +310,7 @@ void fetch_descendants_of_a_module_script(JavaScriptModuleScript& module_script,
// If performFetch was given, pass it along as well.
for (auto const& module_request : module_requests) {
// FIXME: Pass options and performFetch if given.
- fetch_internal_module_script_graph(module_request, fetch_client_settings_object, destination, module_script, visited_set, [context, &module_script](auto const* result) mutable {
+ fetch_internal_module_script_graph(module_request, fetch_client_settings_object, destination, module_script, visited_set, [context, &module_script](auto result) mutable {
// onInternalFetchingComplete given result is the following algorithm:
// 1. If failed is true, then abort these steps.
if (context->failed())
@@ -336,7 +337,7 @@ void fetch_descendants_of_a_module_script(JavaScriptModuleScript& module_script,
}
// https://html.spec.whatwg.org/multipage/webappapis.html#fetch-a-single-module-script
-void fetch_single_module_script(AK::URL const& url, EnvironmentSettingsObject&, StringView, EnvironmentSettingsObject& module_map_settings_object, AK::URL const&, Optional const& module_request, TopLevelModule, ModuleCallback on_complete)
+void fetch_single_module_script(AK::URL const& url, EnvironmentSettingsObject&, StringView, EnvironmentSettingsObject& module_map_settings_object, AK::URL const&, Optional const& module_request, TopLevelModule, OnFetchScriptComplete on_complete)
{
// 1. Let moduleType be "javascript".
DeprecatedString module_type = "javascript"sv;
@@ -418,14 +419,14 @@ void fetch_single_module_script(AK::URL const& url, EnvironmentSettingsObject&,
}
// https://html.spec.whatwg.org/multipage/webappapis.html#fetch-a-module-script-tree
-void fetch_external_module_script_graph(AK::URL const& url, EnvironmentSettingsObject& settings_object, ModuleCallback on_complete)
+void fetch_external_module_script_graph(AK::URL const& url, EnvironmentSettingsObject& settings_object, OnFetchScriptComplete on_complete)
{
// 1. Disallow further import maps given settings object.
settings_object.disallow_further_import_maps();
// 2. Fetch a single module script given url, settings object, "script", options, settings object, "client", true, and with the following steps given result:
// FIXME: Pass options.
- fetch_single_module_script(url, settings_object, "script"sv, settings_object, "client"sv, {}, TopLevelModule::Yes, [&settings_object, on_complete = move(on_complete), url](auto* result) mutable {
+ fetch_single_module_script(url, settings_object, "script"sv, settings_object, "client"sv, {}, TopLevelModule::Yes, [&settings_object, on_complete = move(on_complete), url](auto result) mutable {
// 1. If result is null, run onComplete given null, and abort these steps.
if (!result) {
on_complete(nullptr);
@@ -437,12 +438,13 @@ void fetch_external_module_script_graph(AK::URL const& url, EnvironmentSettingsO
visited_set.set({ url, "javascript"sv });
// 3. Fetch the descendants of and link result given settings object, "script", visited set, and onComplete.
- fetch_descendants_of_and_link_a_module_script(*result, settings_object, "script"sv, move(visited_set), move(on_complete));
+ auto& module_script = verify_cast(*result);
+ fetch_descendants_of_and_link_a_module_script(module_script, settings_object, "script"sv, move(visited_set), move(on_complete));
});
}
// https://html.spec.whatwg.org/multipage/webappapis.html#fetch-an-inline-module-script-graph
-void fetch_inline_module_script_graph(DeprecatedString const& filename, DeprecatedString const& source_text, AK::URL const& base_url, EnvironmentSettingsObject& settings_object, ModuleCallback on_complete)
+void fetch_inline_module_script_graph(DeprecatedString const& filename, DeprecatedString const& source_text, AK::URL const& base_url, EnvironmentSettingsObject& settings_object, OnFetchScriptComplete on_complete)
{
// 1. Disallow further import maps given settings object.
settings_object.disallow_further_import_maps();
@@ -464,12 +466,12 @@ void fetch_inline_module_script_graph(DeprecatedString const& filename, Deprecat
}
// https://html.spec.whatwg.org/multipage/webappapis.html#fetch-the-descendants-of-and-link-a-module-script
-void fetch_descendants_of_and_link_a_module_script(JavaScriptModuleScript& module_script, EnvironmentSettingsObject& fetch_client_settings_object, StringView destination, HashTable const& visited_set, ModuleCallback on_complete)
+void fetch_descendants_of_and_link_a_module_script(JavaScriptModuleScript& module_script, EnvironmentSettingsObject& fetch_client_settings_object, StringView destination, HashTable const& visited_set, OnFetchScriptComplete on_complete)
{
// 1. Fetch the descendants of module script, given fetch client settings object, destination, visited set, and onFetchDescendantsComplete as defined below.
// If performFetch was given, pass it along as well.
// FIXME: Pass performFetch if given.
- fetch_descendants_of_a_module_script(module_script, fetch_client_settings_object, destination, visited_set, [on_complete = move(on_complete)](JavaScriptModuleScript* result) {
+ fetch_descendants_of_a_module_script(module_script, fetch_client_settings_object, destination, visited_set, [on_complete = move(on_complete)](auto result) {
// onFetchDescendantsComplete given result is the following algorithm:
// 1. If result is null, then run onComplete given result, and abort these steps.
if (!result) {
@@ -480,9 +482,9 @@ void fetch_descendants_of_and_link_a_module_script(JavaScriptModuleScript& modul
// FIXME: 2. Let parse error be the result of finding the first parse error given result.
// 3. If parse error is null, then:
- if (result->record()) {
+ if (auto& module_script = verify_cast(*result); module_script.record()) {
// 1. Let record be result's record.
- auto const& record = *result->record();
+ auto const& record = *module_script.record();
// 2. Perform record.Link().
auto linking_result = const_cast(record).link(result->vm());
diff --git a/Userland/Libraries/LibWeb/HTML/Scripting/Fetching.h b/Userland/Libraries/LibWeb/HTML/Scripting/Fetching.h
index 3bbac8402e..c0d294dfe7 100644
--- a/Userland/Libraries/LibWeb/HTML/Scripting/Fetching.h
+++ b/Userland/Libraries/LibWeb/HTML/Scripting/Fetching.h
@@ -12,7 +12,7 @@
namespace Web::HTML {
-using ModuleCallback = JS::SafeFunction;
+using OnFetchScriptComplete = JS::SafeFunction)>;
class DescendantFetchingContext : public RefCounted {
public:
@@ -28,7 +28,7 @@ public:
void set_failed(bool failed) { m_failed = failed; }
void on_complete(JavaScriptModuleScript* module_script) { m_on_complete(module_script); };
- void set_on_complete(ModuleCallback on_complete) { m_on_complete = move(on_complete); }
+ void set_on_complete(OnFetchScriptComplete on_complete) { m_on_complete = move(on_complete); }
private:
DescendantFetchingContext() = default;
@@ -36,7 +36,7 @@ private:
size_t m_pending_count { 0 };
bool m_failed { false };
- ModuleCallback m_on_complete;
+ OnFetchScriptComplete m_on_complete;
};
DeprecatedString module_type_from_module_request(JS::ModuleRequest const&);
@@ -44,18 +44,18 @@ WebIDL::ExceptionOr resolve_module_specifier(Optional