mirror of
				https://github.com/LadybirdBrowser/ladybird.git
				synced 2025-10-31 13:20:59 +00:00 
			
		
		
		
	LibGC+Everywhere: Factor out a LibGC from LibJS
Resulting in a massive rename across almost everywhere! Alongside the namespace change, we now have the following names: * JS::NonnullGCPtr -> GC::Ref * JS::GCPtr -> GC::Ptr * JS::HeapFunction -> GC::Function * JS::CellImpl -> GC::Cell * JS::Handle -> GC::Root
This commit is contained in:
		
							parent
							
								
									ce23efc5f6
								
							
						
					
					
						commit
						f87041bf3a
					
				
				
				Notes:
				
					github-actions[bot]
				
				2024-11-15 13:50:17 +00:00 
				
			
			Author: https://github.com/shannonbooth
Commit: f87041bf3a
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/2345
			
					 1722 changed files with 9939 additions and 9906 deletions
				
			
		|  | @ -16,11 +16,11 @@ | |||
| 
 | ||||
| namespace Web::HTML { | ||||
| 
 | ||||
| JS_DEFINE_ALLOCATOR(ClassicScript); | ||||
| GC_DEFINE_ALLOCATOR(ClassicScript); | ||||
| 
 | ||||
| // https://html.spec.whatwg.org/multipage/webappapis.html#creating-a-classic-script
 | ||||
| // https://whatpr.org/html/9893/webappapis.html#creating-a-classic-script
 | ||||
| JS::NonnullGCPtr<ClassicScript> ClassicScript::create(ByteString filename, StringView source, JS::Realm& realm, URL::URL base_url, size_t source_line_number, MutedErrors muted_errors) | ||||
| GC::Ref<ClassicScript> ClassicScript::create(ByteString filename, StringView source, JS::Realm& realm, URL::URL base_url, size_t source_line_number, MutedErrors muted_errors) | ||||
| { | ||||
|     auto& vm = realm.vm(); | ||||
| 
 | ||||
|  | @ -75,7 +75,7 @@ JS::NonnullGCPtr<ClassicScript> ClassicScript::create(ByteString filename, Strin | |||
| 
 | ||||
| // https://html.spec.whatwg.org/multipage/webappapis.html#run-a-classic-script
 | ||||
| // https://whatpr.org/html/9893/webappapis.html#run-a-classic-script
 | ||||
| JS::Completion ClassicScript::run(RethrowErrors rethrow_errors, JS::GCPtr<JS::Environment> lexical_environment_override) | ||||
| JS::Completion ClassicScript::run(RethrowErrors rethrow_errors, GC::Ptr<JS::Environment> lexical_environment_override) | ||||
| { | ||||
|     // 1. Let realm be the realm of script.
 | ||||
|     auto& realm = this->realm(); | ||||
|  |  | |||
|  | @ -14,8 +14,8 @@ namespace Web::HTML { | |||
| 
 | ||||
| // https://html.spec.whatwg.org/multipage/webappapis.html#classic-script
 | ||||
| class ClassicScript final : public Script { | ||||
|     JS_CELL(ClassicScript, Script); | ||||
|     JS_DECLARE_ALLOCATOR(ClassicScript); | ||||
|     GC_CELL(ClassicScript, Script); | ||||
|     GC_DECLARE_ALLOCATOR(ClassicScript); | ||||
| 
 | ||||
| public: | ||||
|     virtual ~ClassicScript() override; | ||||
|  | @ -24,7 +24,7 @@ public: | |||
|         No, | ||||
|         Yes, | ||||
|     }; | ||||
|     static JS::NonnullGCPtr<ClassicScript> create(ByteString filename, StringView source, JS::Realm&, URL::URL base_url, size_t source_line_number = 1, MutedErrors = MutedErrors::No); | ||||
|     static GC::Ref<ClassicScript> create(ByteString filename, StringView source, JS::Realm&, URL::URL base_url, size_t source_line_number = 1, MutedErrors = MutedErrors::No); | ||||
| 
 | ||||
|     JS::Script* script_record() { return m_script_record; } | ||||
|     JS::Script const* script_record() const { return m_script_record; } | ||||
|  | @ -33,7 +33,7 @@ public: | |||
|         No, | ||||
|         Yes, | ||||
|     }; | ||||
|     JS::Completion run(RethrowErrors = RethrowErrors::No, JS::GCPtr<JS::Environment> lexical_environment_override = {}); | ||||
|     JS::Completion run(RethrowErrors = RethrowErrors::No, GC::Ptr<JS::Environment> lexical_environment_override = {}); | ||||
| 
 | ||||
|     MutedErrors muted_errors() const { return m_muted_errors; } | ||||
| 
 | ||||
|  | @ -42,7 +42,7 @@ private: | |||
| 
 | ||||
|     virtual void visit_edges(Cell::Visitor&) override; | ||||
| 
 | ||||
|     JS::GCPtr<JS::Script> m_script_record; | ||||
|     GC::Ptr<JS::Script> m_script_record; | ||||
|     MutedErrors m_muted_errors { MutedErrors::No }; | ||||
| }; | ||||
| 
 | ||||
|  |  | |||
|  | @ -8,7 +8,7 @@ | |||
| 
 | ||||
| namespace Web::HTML { | ||||
| 
 | ||||
| JS_DEFINE_ALLOCATOR(EnvironmentSettingsSnapshot); | ||||
| GC_DEFINE_ALLOCATOR(EnvironmentSettingsSnapshot); | ||||
| 
 | ||||
| EnvironmentSettingsSnapshot::EnvironmentSettingsSnapshot(NonnullOwnPtr<JS::ExecutionContext> execution_context, SerializedEnvironmentSettingsObject const& serialized_settings) | ||||
|     : EnvironmentSettingsObject(move(execution_context)) | ||||
|  |  | |||
|  | @ -14,15 +14,15 @@ namespace Web::HTML { | |||
| 
 | ||||
| class EnvironmentSettingsSnapshot final | ||||
|     : public EnvironmentSettingsObject { | ||||
|     JS_CELL(EnvironmentSettingsSnapshot, EnvironmentSettingsObject); | ||||
|     JS_DECLARE_ALLOCATOR(EnvironmentSettingsSnapshot); | ||||
|     GC_CELL(EnvironmentSettingsSnapshot, EnvironmentSettingsObject); | ||||
|     GC_DECLARE_ALLOCATOR(EnvironmentSettingsSnapshot); | ||||
| 
 | ||||
| public: | ||||
|     EnvironmentSettingsSnapshot(NonnullOwnPtr<JS::ExecutionContext>, SerializedEnvironmentSettingsObject const&); | ||||
| 
 | ||||
|     virtual ~EnvironmentSettingsSnapshot() override; | ||||
| 
 | ||||
|     JS::GCPtr<DOM::Document> responsible_document() override { return nullptr; } | ||||
|     GC::Ptr<DOM::Document> responsible_document() override { return nullptr; } | ||||
|     String api_url_character_encoding() override { return m_api_url_character_encoding; } | ||||
|     URL::URL api_base_url() override { return m_url; } | ||||
|     URL::Origin origin() override { return m_origin; } | ||||
|  |  | |||
|  | @ -517,7 +517,7 @@ SerializedEnvironmentSettingsObject EnvironmentSettingsObject::serialize() | |||
|     return object; | ||||
| } | ||||
| 
 | ||||
| JS::NonnullGCPtr<StorageAPI::StorageManager> EnvironmentSettingsObject::storage_manager() | ||||
| GC::Ref<StorageAPI::StorageManager> EnvironmentSettingsObject::storage_manager() | ||||
| { | ||||
|     if (!m_storage_manager) | ||||
|         m_storage_manager = realm().create<StorageAPI::StorageManager>(realm()); | ||||
|  |  | |||
|  | @ -20,7 +20,7 @@ namespace Web::HTML { | |||
| 
 | ||||
| // https://html.spec.whatwg.org/multipage/webappapis.html#environment
 | ||||
| struct Environment : public JS::Cell { | ||||
|     JS_CELL(Environment, JS::Cell); | ||||
|     GC_CELL(Environment, JS::Cell); | ||||
| 
 | ||||
| public: | ||||
|     virtual ~Environment() override; | ||||
|  | @ -38,7 +38,7 @@ public: | |||
|     URL::Origin top_level_origin; | ||||
| 
 | ||||
|     // https://html.spec.whatwg.org/multipage/webappapis.html#concept-environment-target-browsing-context
 | ||||
|     JS::GCPtr<BrowsingContext> target_browsing_context; | ||||
|     GC::Ptr<BrowsingContext> target_browsing_context; | ||||
| 
 | ||||
|     // FIXME: An active service worker https://html.spec.whatwg.org/multipage/webappapis.html#concept-environment-active-service-worker
 | ||||
| 
 | ||||
|  | @ -56,7 +56,7 @@ enum class RunScriptDecision { | |||
| 
 | ||||
| // https://html.spec.whatwg.org/multipage/webappapis.html#environment-settings-object
 | ||||
| struct EnvironmentSettingsObject : public Environment { | ||||
|     JS_CELL(EnvironmentSettingsObject, Environment); | ||||
|     GC_CELL(EnvironmentSettingsObject, Environment); | ||||
| 
 | ||||
| public: | ||||
|     virtual ~EnvironmentSettingsObject() override; | ||||
|  | @ -70,7 +70,7 @@ public: | |||
|     ModuleMap& module_map(); | ||||
| 
 | ||||
|     // https://html.spec.whatwg.org/multipage/webappapis.html#responsible-document
 | ||||
|     virtual JS::GCPtr<DOM::Document> responsible_document() = 0; | ||||
|     virtual GC::Ptr<DOM::Document> responsible_document() = 0; | ||||
| 
 | ||||
|     // https://html.spec.whatwg.org/multipage/webappapis.html#api-url-character-encoding
 | ||||
|     virtual String api_url_character_encoding() = 0; | ||||
|  | @ -94,11 +94,11 @@ public: | |||
|     EventLoop& responsible_event_loop(); | ||||
| 
 | ||||
|     // https://fetch.spec.whatwg.org/#concept-fetch-group
 | ||||
|     Vector<JS::NonnullGCPtr<Fetch::Infrastructure::FetchRecord>>& fetch_group() { return m_fetch_group; } | ||||
|     Vector<GC::Ref<Fetch::Infrastructure::FetchRecord>>& fetch_group() { return m_fetch_group; } | ||||
| 
 | ||||
|     SerializedEnvironmentSettingsObject serialize(); | ||||
| 
 | ||||
|     JS::NonnullGCPtr<StorageAPI::StorageManager> storage_manager(); | ||||
|     GC::Ref<StorageAPI::StorageManager> storage_manager(); | ||||
| 
 | ||||
|     [[nodiscard]] bool discarded() const { return m_discarded; } | ||||
|     void set_discarded(bool b) { m_discarded = b; } | ||||
|  | @ -110,17 +110,17 @@ protected: | |||
| 
 | ||||
| private: | ||||
|     NonnullOwnPtr<JS::ExecutionContext> m_realm_execution_context; | ||||
|     JS::GCPtr<ModuleMap> m_module_map; | ||||
|     GC::Ptr<ModuleMap> m_module_map; | ||||
| 
 | ||||
|     JS::GCPtr<EventLoop> m_responsible_event_loop; | ||||
|     GC::Ptr<EventLoop> m_responsible_event_loop; | ||||
| 
 | ||||
|     // https://fetch.spec.whatwg.org/#concept-fetch-record
 | ||||
|     // A fetch group holds an ordered list of fetch records
 | ||||
|     Vector<JS::NonnullGCPtr<Fetch::Infrastructure::FetchRecord>> m_fetch_group; | ||||
|     Vector<GC::Ref<Fetch::Infrastructure::FetchRecord>> m_fetch_group; | ||||
| 
 | ||||
|     // https://storage.spec.whatwg.org/#api
 | ||||
|     // Each environment settings object has an associated StorageManager object.
 | ||||
|     JS::GCPtr<StorageAPI::StorageManager> m_storage_manager; | ||||
|     GC::Ptr<StorageAPI::StorageManager> m_storage_manager; | ||||
| 
 | ||||
|     // https://w3c.github.io/ServiceWorker/#service-worker-client-discarded-flag
 | ||||
|     // A service worker client has an associated discarded flag. It is initially unset.
 | ||||
|  |  | |||
|  | @ -6,7 +6,7 @@ | |||
|  */ | ||||
| 
 | ||||
| #include <LibCore/EventLoop.h> | ||||
| #include <LibJS/Heap/HeapFunction.h> | ||||
| #include <LibGC/Function.h> | ||||
| #include <LibJS/Runtime/ModuleRequest.h> | ||||
| #include <LibTextCodec/Decoder.h> | ||||
| #include <LibWeb/DOM/Document.h> | ||||
|  | @ -30,16 +30,16 @@ | |||
| 
 | ||||
| namespace Web::HTML { | ||||
| 
 | ||||
| JS_DEFINE_ALLOCATOR(FetchContext); | ||||
| GC_DEFINE_ALLOCATOR(FetchContext); | ||||
| 
 | ||||
| OnFetchScriptComplete create_on_fetch_script_complete(JS::Heap& heap, Function<void(JS::GCPtr<Script>)> function) | ||||
| OnFetchScriptComplete create_on_fetch_script_complete(GC::Heap& heap, Function<void(GC::Ptr<Script>)> function) | ||||
| { | ||||
|     return JS::create_heap_function(heap, move(function)); | ||||
|     return GC::create_function(heap, move(function)); | ||||
| } | ||||
| 
 | ||||
| PerformTheFetchHook create_perform_the_fetch_hook(JS::Heap& heap, Function<WebIDL::ExceptionOr<void>(JS::NonnullGCPtr<Fetch::Infrastructure::Request>, TopLevelModule, Fetch::Infrastructure::FetchAlgorithms::ProcessResponseConsumeBodyFunction)> function) | ||||
| PerformTheFetchHook create_perform_the_fetch_hook(GC::Heap& heap, Function<WebIDL::ExceptionOr<void>(GC::Ref<Fetch::Infrastructure::Request>, TopLevelModule, Fetch::Infrastructure::FetchAlgorithms::ProcessResponseConsumeBodyFunction)> function) | ||||
| { | ||||
|     return JS::create_heap_function(heap, move(function)); | ||||
|     return GC::create_function(heap, move(function)); | ||||
| } | ||||
| 
 | ||||
| ScriptFetchOptions default_script_fetch_options() | ||||
|  | @ -319,7 +319,7 @@ WebIDL::ExceptionOr<String> resolve_a_module_integrity_metadata(const URL::URL& | |||
| } | ||||
| 
 | ||||
| // https://html.spec.whatwg.org/multipage/webappapis.html#fetch-a-classic-script
 | ||||
| WebIDL::ExceptionOr<void> fetch_classic_script(JS::NonnullGCPtr<HTMLScriptElement> element, URL::URL const& url, EnvironmentSettingsObject& settings_object, ScriptFetchOptions options, CORSSettingAttribute cors_setting, String character_encoding, OnFetchScriptComplete on_complete) | ||||
| WebIDL::ExceptionOr<void> fetch_classic_script(GC::Ref<HTMLScriptElement> element, URL::URL const& url, EnvironmentSettingsObject& settings_object, ScriptFetchOptions options, CORSSettingAttribute cors_setting, String character_encoding, OnFetchScriptComplete on_complete) | ||||
| { | ||||
|     auto& realm = element->realm(); | ||||
|     auto& vm = realm.vm(); | ||||
|  | @ -464,13 +464,13 @@ WebIDL::ExceptionOr<void> fetch_classic_worker_script(URL::URL const& url, Envir | |||
| } | ||||
| 
 | ||||
| // https://html.spec.whatwg.org/multipage/webappapis.html#fetch-a-classic-worker-imported-script
 | ||||
| WebIDL::ExceptionOr<JS::NonnullGCPtr<ClassicScript>> fetch_a_classic_worker_imported_script(URL::URL const& url, HTML::EnvironmentSettingsObject& settings_object, PerformTheFetchHook perform_fetch) | ||||
| WebIDL::ExceptionOr<GC::Ref<ClassicScript>> fetch_a_classic_worker_imported_script(URL::URL const& url, HTML::EnvironmentSettingsObject& settings_object, PerformTheFetchHook perform_fetch) | ||||
| { | ||||
|     auto& realm = settings_object.realm(); | ||||
|     auto& vm = realm.vm(); | ||||
| 
 | ||||
|     // 1. Let response be null.
 | ||||
|     JS::GCPtr<Fetch::Infrastructure::Response> response = nullptr; | ||||
|     GC::Ptr<Fetch::Infrastructure::Response> response = nullptr; | ||||
| 
 | ||||
|     // 2. Let bodyBytes be null.
 | ||||
|     Fetch::Infrastructure::FetchAlgorithms::BodyBytes body_bytes; | ||||
|  | @ -485,7 +485,7 @@ WebIDL::ExceptionOr<JS::NonnullGCPtr<ClassicScript>> fetch_a_classic_worker_impo | |||
|     request->set_parser_metadata(Fetch::Infrastructure::Request::ParserMetadata::NotParserInserted); | ||||
|     request->set_use_url_credentials(true); | ||||
| 
 | ||||
|     auto process_response_consume_body = [&response, &body_bytes](JS::NonnullGCPtr<Fetch::Infrastructure::Response> res, Fetch::Infrastructure::FetchAlgorithms::BodyBytes bb) { | ||||
|     auto process_response_consume_body = [&response, &body_bytes](GC::Ref<Fetch::Infrastructure::Response> res, Fetch::Infrastructure::FetchAlgorithms::BodyBytes bb) { | ||||
|         // 1. Set bodyBytes to bb.
 | ||||
|         body_bytes = move(bb); | ||||
| 
 | ||||
|  | @ -506,7 +506,7 @@ WebIDL::ExceptionOr<JS::NonnullGCPtr<ClassicScript>> fetch_a_classic_worker_impo | |||
| 
 | ||||
|     // 5. Pause until response is not null.
 | ||||
|     auto& event_loop = settings_object.responsible_event_loop(); | ||||
|     event_loop.spin_until(JS::create_heap_function(vm.heap(), [&]() -> bool { | ||||
|     event_loop.spin_until(GC::create_function(vm.heap(), [&]() -> bool { | ||||
|         return response; | ||||
|     })); | ||||
| 
 | ||||
|  | @ -759,7 +759,7 @@ void fetch_single_module_script(JS::Realm& realm, | |||
|     //    then queue a task on the networking task source to proceed with running the following steps.
 | ||||
|     if (module_map.is_fetching(url, module_type)) { | ||||
|         module_map.wait_for_change(realm.heap(), url, module_type, [on_complete, &realm](auto entry) -> void { | ||||
|             HTML::queue_global_task(HTML::Task::Source::Networking, realm.global_object(), JS::create_heap_function(realm.heap(), [on_complete, entry] { | ||||
|             HTML::queue_global_task(HTML::Task::Source::Networking, realm.global_object(), GC::create_function(realm.heap(), [on_complete, entry] { | ||||
|                 // FIXME: This should run other steps, for now we just assume the script loaded.
 | ||||
|                 VERIFY(entry.type == ModuleMap::EntryType::ModuleScript || entry.type == ModuleMap::EntryType::Failed); | ||||
| 
 | ||||
|  | @ -803,7 +803,7 @@ void fetch_single_module_script(JS::Realm& realm, | |||
|     // 13. If performFetch was given, run performFetch with request, isTopLevel, and with processResponseConsumeBody as defined below.
 | ||||
|     //     Otherwise, fetch request with processResponseConsumeBody set to processResponseConsumeBody as defined below.
 | ||||
|     //     In both cases, let processResponseConsumeBody given response response and null, failure, or a byte sequence bodyBytes be the following algorithm:
 | ||||
|     auto process_response_consume_body = [&module_map, url, module_type, &module_map_realm, on_complete](JS::NonnullGCPtr<Fetch::Infrastructure::Response> response, Fetch::Infrastructure::FetchAlgorithms::BodyBytes body_bytes) { | ||||
|     auto process_response_consume_body = [&module_map, url, module_type, &module_map_realm, on_complete](GC::Ref<Fetch::Infrastructure::Response> response, Fetch::Infrastructure::FetchAlgorithms::BodyBytes body_bytes) { | ||||
|         // 1. If either of the following conditions are met:
 | ||||
|         //    - bodyBytes is null or failure; or
 | ||||
|         //    - response's status is not an ok status,
 | ||||
|  | @ -823,7 +823,7 @@ void fetch_single_module_script(JS::Realm& realm, | |||
|         auto mime_type = response->header_list()->extract_mime_type(); | ||||
| 
 | ||||
|         // 4. Let moduleScript be null.
 | ||||
|         JS::GCPtr<JavaScriptModuleScript> module_script; | ||||
|         GC::Ptr<JavaScriptModuleScript> module_script; | ||||
| 
 | ||||
|         // FIXME: 5. Let referrerPolicy be the result of parsing the `Referrer-Policy` header given response. [REFERRERPOLICY]
 | ||||
|         // FIXME: 6. If referrerPolicy is not the empty string, set options's referrer policy to referrerPolicy.
 | ||||
|  | @ -968,7 +968,7 @@ void fetch_descendants_of_and_link_a_module_script(JS::Realm& realm, | |||
|     auto& loading_promise = record->load_requested_modules(state); | ||||
| 
 | ||||
|     // 6. Upon fulfillment of loadingPromise, run the following steps:
 | ||||
|     WebIDL::upon_fulfillment(loading_promise, JS::create_heap_function(realm.heap(), [&realm, record, &module_script, on_complete](JS::Value) -> WebIDL::ExceptionOr<JS::Value> { | ||||
|     WebIDL::upon_fulfillment(loading_promise, GC::create_function(realm.heap(), [&realm, record, &module_script, on_complete](JS::Value) -> WebIDL::ExceptionOr<JS::Value> { | ||||
|         // 1. Perform record.Link().
 | ||||
|         auto linking_result = record->link(realm.vm()); | ||||
| 
 | ||||
|  | @ -983,7 +983,7 @@ void fetch_descendants_of_and_link_a_module_script(JS::Realm& realm, | |||
|     })); | ||||
| 
 | ||||
|     // 7. Upon rejection of loadingPromise, run the following steps:
 | ||||
|     WebIDL::upon_rejection(loading_promise, JS::create_heap_function(realm.heap(), [state, &module_script, on_complete](JS::Value) -> WebIDL::ExceptionOr<JS::Value> { | ||||
|     WebIDL::upon_rejection(loading_promise, GC::create_function(realm.heap(), [state, &module_script, on_complete](JS::Value) -> WebIDL::ExceptionOr<JS::Value> { | ||||
|         // 1. If state.[[ParseError]] is not null, set moduleScript's error to rethrow to state.[[ParseError]] and run
 | ||||
|         //    onComplete given moduleScript.
 | ||||
|         if (!state->parse_error.is_null()) { | ||||
|  |  | |||
|  | @ -21,11 +21,11 @@ enum class TopLevelModule { | |||
|     No | ||||
| }; | ||||
| 
 | ||||
| using OnFetchScriptComplete = JS::NonnullGCPtr<JS::HeapFunction<void(JS::GCPtr<Script>)>>; | ||||
| using PerformTheFetchHook = JS::GCPtr<JS::HeapFunction<WebIDL::ExceptionOr<void>(JS::NonnullGCPtr<Fetch::Infrastructure::Request>, TopLevelModule, Fetch::Infrastructure::FetchAlgorithms::ProcessResponseConsumeBodyFunction)>>; | ||||
| using OnFetchScriptComplete = GC::Ref<GC::Function<void(GC::Ptr<Script>)>>; | ||||
| using PerformTheFetchHook = GC::Ptr<GC::Function<WebIDL::ExceptionOr<void>(GC::Ref<Fetch::Infrastructure::Request>, TopLevelModule, Fetch::Infrastructure::FetchAlgorithms::ProcessResponseConsumeBodyFunction)>>; | ||||
| 
 | ||||
| OnFetchScriptComplete create_on_fetch_script_complete(JS::Heap& heap, Function<void(JS::GCPtr<Script>)> function); | ||||
| PerformTheFetchHook create_perform_the_fetch_hook(JS::Heap& heap, Function<WebIDL::ExceptionOr<void>(JS::NonnullGCPtr<Fetch::Infrastructure::Request>, TopLevelModule, Fetch::Infrastructure::FetchAlgorithms::ProcessResponseConsumeBodyFunction)> function); | ||||
| OnFetchScriptComplete create_on_fetch_script_complete(GC::Heap& heap, Function<void(GC::Ptr<Script>)> function); | ||||
| PerformTheFetchHook create_perform_the_fetch_hook(GC::Heap& heap, Function<WebIDL::ExceptionOr<void>(GC::Ref<Fetch::Infrastructure::Request>, TopLevelModule, Fetch::Infrastructure::FetchAlgorithms::ProcessResponseConsumeBodyFunction)> function); | ||||
| 
 | ||||
| // https://html.spec.whatwg.org/multipage/webappapis.html#script-fetch-options
 | ||||
| struct ScriptFetchOptions { | ||||
|  | @ -55,14 +55,14 @@ struct ScriptFetchOptions { | |||
| ScriptFetchOptions default_script_fetch_options(); | ||||
| 
 | ||||
| class FetchContext : public JS::GraphLoadingState::HostDefined { | ||||
|     JS_CELL(FetchContext, JS::GraphLoadingState::HostDefined); | ||||
|     JS_DECLARE_ALLOCATOR(FetchContext); | ||||
|     GC_CELL(FetchContext, JS::GraphLoadingState::HostDefined); | ||||
|     GC_DECLARE_ALLOCATOR(FetchContext); | ||||
| 
 | ||||
| public: | ||||
|     JS::Value parse_error;                                    // [[ParseError]]
 | ||||
|     Fetch::Infrastructure::Request::Destination destination;  // [[Destination]]
 | ||||
|     PerformTheFetchHook perform_fetch;                        // [[PerformFetch]]
 | ||||
|     JS::NonnullGCPtr<EnvironmentSettingsObject> fetch_client; // [[FetchClient]]
 | ||||
|     JS::Value parse_error;                                   // [[ParseError]]
 | ||||
|     Fetch::Infrastructure::Request::Destination destination; // [[Destination]]
 | ||||
|     PerformTheFetchHook perform_fetch;                       // [[PerformFetch]]
 | ||||
|     GC::Ref<EnvironmentSettingsObject> fetch_client;         // [[FetchClient]]
 | ||||
| 
 | ||||
| private: | ||||
|     FetchContext(JS::Value parse_error, Fetch::Infrastructure::Request::Destination destination, PerformTheFetchHook perform_fetch, EnvironmentSettingsObject& fetch_client) | ||||
|  | @ -88,9 +88,9 @@ WebIDL::ExceptionOr<Optional<URL::URL>> resolve_imports_match(ByteString const& | |||
| Optional<URL::URL> resolve_url_like_module_specifier(ByteString const& specifier, URL::URL const& base_url); | ||||
| WebIDL::ExceptionOr<ScriptFetchOptions> get_descendant_script_fetch_options(ScriptFetchOptions const& original_options, URL::URL const& url, EnvironmentSettingsObject& settings_object); | ||||
| WebIDL::ExceptionOr<String> resolve_a_module_integrity_metadata(URL::URL const& url, EnvironmentSettingsObject& settings_object); | ||||
| WebIDL::ExceptionOr<void> fetch_classic_script(JS::NonnullGCPtr<HTMLScriptElement>, URL::URL const&, EnvironmentSettingsObject& settings_object, ScriptFetchOptions options, CORSSettingAttribute cors_setting, String character_encoding, OnFetchScriptComplete on_complete); | ||||
| WebIDL::ExceptionOr<void> fetch_classic_script(GC::Ref<HTMLScriptElement>, URL::URL const&, EnvironmentSettingsObject& settings_object, ScriptFetchOptions options, CORSSettingAttribute cors_setting, String character_encoding, OnFetchScriptComplete on_complete); | ||||
| WebIDL::ExceptionOr<void> fetch_classic_worker_script(URL::URL const&, EnvironmentSettingsObject& fetch_client, Fetch::Infrastructure::Request::Destination, EnvironmentSettingsObject& settings_object, PerformTheFetchHook, OnFetchScriptComplete); | ||||
| WebIDL::ExceptionOr<JS::NonnullGCPtr<ClassicScript>> fetch_a_classic_worker_imported_script(URL::URL const&, HTML::EnvironmentSettingsObject&, PerformTheFetchHook = nullptr); | ||||
| WebIDL::ExceptionOr<GC::Ref<ClassicScript>> fetch_a_classic_worker_imported_script(URL::URL const&, HTML::EnvironmentSettingsObject&, PerformTheFetchHook = nullptr); | ||||
| WebIDL::ExceptionOr<void> fetch_module_worker_script_graph(URL::URL const&, EnvironmentSettingsObject& fetch_client, Fetch::Infrastructure::Request::Destination, EnvironmentSettingsObject& settings_object, PerformTheFetchHook, OnFetchScriptComplete); | ||||
| WebIDL::ExceptionOr<void> fetch_worklet_module_worker_script_graph(URL::URL const&, EnvironmentSettingsObject& fetch_client, Fetch::Infrastructure::Request::Destination, EnvironmentSettingsObject& settings_object, PerformTheFetchHook, OnFetchScriptComplete); | ||||
| void fetch_internal_module_script_graph(JS::Realm&, JS::ModuleRequest const& module_request, EnvironmentSettingsObject& fetch_client_settings_object, Fetch::Infrastructure::Request::Destination, ScriptFetchOptions const&, Script& referring_script, HashTable<ModuleLocationTuple> const& visited_set, PerformTheFetchHook, OnFetchScriptComplete on_complete); | ||||
|  |  | |||
|  | @ -13,14 +13,14 @@ | |||
| 
 | ||||
| namespace Web::HTML { | ||||
| 
 | ||||
| JS_DEFINE_ALLOCATOR(ImportMapParseResult); | ||||
| GC_DEFINE_ALLOCATOR(ImportMapParseResult); | ||||
| 
 | ||||
| ImportMapParseResult::ImportMapParseResult() = default; | ||||
| 
 | ||||
| ImportMapParseResult::~ImportMapParseResult() = default; | ||||
| 
 | ||||
| // https://html.spec.whatwg.org/multipage/webappapis.html#create-an-import-map-parse-result
 | ||||
| JS::NonnullGCPtr<ImportMapParseResult> ImportMapParseResult::create(JS::Realm& realm, ByteString const& input, URL::URL base_url) | ||||
| GC::Ref<ImportMapParseResult> ImportMapParseResult::create(JS::Realm& realm, ByteString const& input, URL::URL base_url) | ||||
| { | ||||
|     // 1. Let result be an import map parse result whose import map is null and whose error to rethrow is null.
 | ||||
|     auto result = realm.create<ImportMapParseResult>(); | ||||
|  | @ -53,7 +53,7 @@ void ImportMapParseResult::visit_edges(Visitor& visitor) | |||
|             [&](WebIDL::SimpleException const&) { | ||||
|                 // ignore
 | ||||
|             }, | ||||
|             [&](JS::NonnullGCPtr<WebIDL::DOMException> exception) { | ||||
|             [&](GC::Ref<WebIDL::DOMException> exception) { | ||||
|                 visitor.visit(exception); | ||||
|             }, | ||||
|             [&](JS::Completion const& completion) { | ||||
|  |  | |||
|  | @ -19,13 +19,13 @@ namespace Web::HTML { | |||
| class ImportMapParseResult | ||||
|     : public JS::Cell | ||||
|     , public JS::Script::HostDefined { | ||||
|     JS_CELL(ImportMapParseResult, JS::Cell); | ||||
|     JS_DECLARE_ALLOCATOR(ImportMapParseResult); | ||||
|     GC_CELL(ImportMapParseResult, JS::Cell); | ||||
|     GC_DECLARE_ALLOCATOR(ImportMapParseResult); | ||||
| 
 | ||||
| public: | ||||
|     virtual ~ImportMapParseResult() override; | ||||
| 
 | ||||
|     static JS::NonnullGCPtr<ImportMapParseResult> create(JS::Realm& realm, ByteString const& input, URL::URL base_url); | ||||
|     static GC::Ref<ImportMapParseResult> create(JS::Realm& realm, ByteString const& input, URL::URL base_url); | ||||
| 
 | ||||
|     [[nodiscard]] Optional<ImportMap> const& import_map() const { return m_import_map; } | ||||
|     void set_import_map(ImportMap const& value) { m_import_map = value; } | ||||
|  |  | |||
|  | @ -8,7 +8,7 @@ | |||
| 
 | ||||
| namespace Web::HTML { | ||||
| 
 | ||||
| JS_DEFINE_ALLOCATOR(ModuleMap); | ||||
| GC_DEFINE_ALLOCATOR(ModuleMap); | ||||
| 
 | ||||
| void ModuleMap::visit_edges(Visitor& visitor) | ||||
| { | ||||
|  | @ -62,9 +62,9 @@ AK::HashSetResult ModuleMap::set(URL::URL const& url, ByteString const& type, En | |||
|     return value; | ||||
| } | ||||
| 
 | ||||
| void ModuleMap::wait_for_change(JS::Heap& heap, URL::URL const& url, ByteString const& type, Function<void(Entry)> callback) | ||||
| void ModuleMap::wait_for_change(GC::Heap& heap, URL::URL const& url, ByteString const& type, Function<void(Entry)> callback) | ||||
| { | ||||
|     m_callbacks.ensure({ url, type }).append(JS::create_heap_function(heap, move(callback))); | ||||
|     m_callbacks.ensure({ url, type }).append(GC::create_function(heap, move(callback))); | ||||
| } | ||||
| 
 | ||||
| } | ||||
|  |  | |||
|  | @ -6,8 +6,8 @@ | |||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| #include <LibGC/Function.h> | ||||
| #include <LibJS/Heap/Cell.h> | ||||
| #include <LibJS/Heap/HeapFunction.h> | ||||
| #include <LibURL/URL.h> | ||||
| #include <LibWeb/HTML/Scripting/ModuleScript.h> | ||||
| 
 | ||||
|  | @ -36,8 +36,8 @@ private: | |||
| 
 | ||||
| // https://html.spec.whatwg.org/multipage/webappapis.html#module-map
 | ||||
| class ModuleMap final : public JS::Cell { | ||||
|     JS_CELL(ModuleMap, JS::Cell); | ||||
|     JS_DECLARE_ALLOCATOR(ModuleMap); | ||||
|     GC_CELL(ModuleMap, JS::Cell); | ||||
|     GC_DECLARE_ALLOCATOR(ModuleMap); | ||||
| 
 | ||||
| public: | ||||
|     ModuleMap() = default; | ||||
|  | @ -51,10 +51,10 @@ public: | |||
| 
 | ||||
|     struct Entry { | ||||
|         EntryType type; | ||||
|         JS::GCPtr<JavaScriptModuleScript> module_script; | ||||
|         GC::Ptr<JavaScriptModuleScript> module_script; | ||||
|     }; | ||||
| 
 | ||||
|     using CallbackFunction = JS::NonnullGCPtr<JS::HeapFunction<void(Entry)>>; | ||||
|     using CallbackFunction = GC::Ref<GC::Function<void(Entry)>>; | ||||
| 
 | ||||
|     bool is_fetching(URL::URL const& url, ByteString const& type) const; | ||||
|     bool is_failed(URL::URL const& url, ByteString const& type) const; | ||||
|  | @ -65,7 +65,7 @@ public: | |||
| 
 | ||||
|     AK::HashSetResult set(URL::URL const& url, ByteString const& type, Entry); | ||||
| 
 | ||||
|     void wait_for_change(JS::Heap&, URL::URL const& url, ByteString const& type, Function<void(Entry)> callback); | ||||
|     void wait_for_change(GC::Heap&, URL::URL const& url, ByteString const& type, Function<void(Entry)> callback); | ||||
| 
 | ||||
| private: | ||||
|     virtual void visit_edges(JS::Cell::Visitor&) override; | ||||
|  |  | |||
|  | @ -13,7 +13,7 @@ | |||
| 
 | ||||
| namespace Web::HTML { | ||||
| 
 | ||||
| JS_DEFINE_ALLOCATOR(JavaScriptModuleScript); | ||||
| GC_DEFINE_ALLOCATOR(JavaScriptModuleScript); | ||||
| 
 | ||||
| ModuleScript::~ModuleScript() = default; | ||||
| 
 | ||||
|  | @ -31,7 +31,7 @@ JavaScriptModuleScript::JavaScriptModuleScript(URL::URL base_url, ByteString fil | |||
| 
 | ||||
| // https://html.spec.whatwg.org/multipage/webappapis.html#creating-a-javascript-module-script
 | ||||
| // https://whatpr.org/html/9893/webappapis.html#creating-a-javascript-module-script
 | ||||
| WebIDL::ExceptionOr<JS::GCPtr<JavaScriptModuleScript>> JavaScriptModuleScript::create(ByteString const& filename, StringView source, JS::Realm& realm, URL::URL base_url) | ||||
| WebIDL::ExceptionOr<GC::Ptr<JavaScriptModuleScript>> JavaScriptModuleScript::create(ByteString const& filename, StringView source, JS::Realm& realm, URL::URL base_url) | ||||
| { | ||||
|     // 1. If scripting is disabled for realm, then set source to the empty string.
 | ||||
|     if (HTML::is_scripting_disabled(realm)) | ||||
|  | @ -146,7 +146,7 @@ JS::Promise* JavaScriptModuleScript::run(PreventErrorReporting) | |||
|         // NON-STANDARD: To ensure that LibJS can find the module on the stack, we push a new execution context.
 | ||||
|         auto module_execution_context = JS::ExecutionContext::create(); | ||||
|         module_execution_context->realm = &realm; | ||||
|         module_execution_context->script_or_module = JS::NonnullGCPtr<JS::Module> { *record }; | ||||
|         module_execution_context->script_or_module = GC::Ref<JS::Module> { *record }; | ||||
|         vm().push_execution_context(*module_execution_context); | ||||
| 
 | ||||
|         // 2. Set evaluationPromise to record.Evaluate().
 | ||||
|  |  | |||
|  | @ -13,7 +13,7 @@ namespace Web::HTML { | |||
| 
 | ||||
| // https://html.spec.whatwg.org/multipage/webappapis.html#module-script
 | ||||
| class ModuleScript : public Script { | ||||
|     JS_CELL(ModuleScript, Script); | ||||
|     GC_CELL(ModuleScript, Script); | ||||
| 
 | ||||
| public: | ||||
|     virtual ~ModuleScript() override; | ||||
|  | @ -23,13 +23,13 @@ protected: | |||
| }; | ||||
| 
 | ||||
| class JavaScriptModuleScript final : public ModuleScript { | ||||
|     JS_CELL(JavaScriptModuleScript, ModuleScript); | ||||
|     JS_DECLARE_ALLOCATOR(JavaScriptModuleScript); | ||||
|     GC_CELL(JavaScriptModuleScript, ModuleScript); | ||||
|     GC_DECLARE_ALLOCATOR(JavaScriptModuleScript); | ||||
| 
 | ||||
| public: | ||||
|     virtual ~JavaScriptModuleScript() override; | ||||
| 
 | ||||
|     static WebIDL::ExceptionOr<JS::GCPtr<JavaScriptModuleScript>> create(ByteString const& filename, StringView source, JS::Realm&, URL::URL base_url); | ||||
|     static WebIDL::ExceptionOr<GC::Ptr<JavaScriptModuleScript>> create(ByteString const& filename, StringView source, JS::Realm&, URL::URL base_url); | ||||
| 
 | ||||
|     enum class PreventErrorReporting { | ||||
|         Yes, | ||||
|  | @ -47,7 +47,7 @@ protected: | |||
| private: | ||||
|     virtual void visit_edges(JS::Cell::Visitor&) override; | ||||
| 
 | ||||
|     JS::GCPtr<JS::SourceTextModule> m_record; | ||||
|     GC::Ptr<JS::SourceTextModule> m_record; | ||||
| 
 | ||||
|     size_t m_fetch_internal_request_count { 0 }; | ||||
|     size_t m_completed_fetch_internal_request_count { 0 }; | ||||
|  |  | |||
|  | @ -9,7 +9,7 @@ | |||
| 
 | ||||
| namespace Web::HTML { | ||||
| 
 | ||||
| JS_DEFINE_ALLOCATOR(Script); | ||||
| GC_DEFINE_ALLOCATOR(Script); | ||||
| 
 | ||||
| Script::Script(URL::URL base_url, ByteString filename, JS::Realm& realm) | ||||
|     : m_base_url(move(base_url)) | ||||
|  |  | |||
|  | @ -18,8 +18,8 @@ namespace Web::HTML { | |||
| class Script | ||||
|     : public JS::Cell | ||||
|     , public JS::Script::HostDefined { | ||||
|     JS_CELL(Script, JS::Cell); | ||||
|     JS_DECLARE_ALLOCATOR(Script); | ||||
|     GC_CELL(Script, JS::Cell); | ||||
|     GC_DECLARE_ALLOCATOR(Script); | ||||
| 
 | ||||
| public: | ||||
|     virtual ~Script() override; | ||||
|  | @ -46,7 +46,7 @@ private: | |||
| 
 | ||||
|     URL::URL m_base_url; | ||||
|     ByteString m_filename; | ||||
|     JS::NonnullGCPtr<JS::Realm> m_realm; | ||||
|     GC::Ref<JS::Realm> m_realm; | ||||
| 
 | ||||
|     // https://html.spec.whatwg.org/multipage/webappapis.html#concept-script-parse-error
 | ||||
|     JS::Value m_parse_error; | ||||
|  |  | |||
|  | @ -6,8 +6,8 @@ | |||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| #include <LibGC/Ptr.h> | ||||
| #include <LibJS/Forward.h> | ||||
| #include <LibJS/Heap/GCPtr.h> | ||||
| #include <LibWeb/Forward.h> | ||||
| 
 | ||||
| namespace Web::HTML { | ||||
|  | @ -21,15 +21,15 @@ struct SyntheticRealmSettings { | |||
| 
 | ||||
|     // A principal realm
 | ||||
|     // The principal realm which this synthetic realm exists within.
 | ||||
|     JS::NonnullGCPtr<JS::Realm> principal_realm; | ||||
|     GC::Ref<JS::Realm> principal_realm; | ||||
| 
 | ||||
|     // An underlying realm
 | ||||
|     // The synthetic realm which this settings object represents.
 | ||||
|     JS::NonnullGCPtr<JS::Realm> underlying_realm; | ||||
|     GC::Ref<JS::Realm> underlying_realm; | ||||
| 
 | ||||
|     // A module map
 | ||||
|     // A module map that is used when importing JavaScript modules.
 | ||||
|     JS::NonnullGCPtr<ModuleMap> module_map; | ||||
|     GC::Ref<ModuleMap> module_map; | ||||
| 
 | ||||
|     void visit_edges(JS::Cell::Visitor&); | ||||
| }; | ||||
|  |  | |||
|  | @ -6,7 +6,7 @@ | |||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| #include <LibJS/Heap/GCPtr.h> | ||||
| #include <LibGC/Ptr.h> | ||||
| #include <LibWeb/Forward.h> | ||||
| 
 | ||||
| namespace Web::HTML { | ||||
|  | @ -25,7 +25,7 @@ public: | |||
|     ~TemporaryExecutionContext(); | ||||
| 
 | ||||
| private: | ||||
|     JS::NonnullGCPtr<JS::Realm> m_realm; | ||||
|     GC::Ref<JS::Realm> m_realm; | ||||
|     CallbacksEnabled m_callbacks_enabled { CallbacksEnabled::No }; | ||||
| }; | ||||
| 
 | ||||
|  |  | |||
|  | @ -12,7 +12,7 @@ | |||
| 
 | ||||
| namespace Web::HTML { | ||||
| 
 | ||||
| JS_DEFINE_ALLOCATOR(WindowEnvironmentSettingsObject); | ||||
| GC_DEFINE_ALLOCATOR(WindowEnvironmentSettingsObject); | ||||
| 
 | ||||
| WindowEnvironmentSettingsObject::WindowEnvironmentSettingsObject(Window& window, NonnullOwnPtr<JS::ExecutionContext> execution_context) | ||||
|     : EnvironmentSettingsObject(move(execution_context)) | ||||
|  | @ -29,7 +29,7 @@ void WindowEnvironmentSettingsObject::visit_edges(JS::Cell::Visitor& visitor) | |||
| } | ||||
| 
 | ||||
| // https://html.spec.whatwg.org/multipage/window-object.html#set-up-a-window-environment-settings-object
 | ||||
| void WindowEnvironmentSettingsObject::setup(Page& page, URL::URL const& creation_url, NonnullOwnPtr<JS::ExecutionContext> execution_context, JS::GCPtr<Environment> reserved_environment, URL::URL top_level_creation_url, URL::Origin top_level_origin) | ||||
| void WindowEnvironmentSettingsObject::setup(Page& page, URL::URL const& creation_url, NonnullOwnPtr<JS::ExecutionContext> execution_context, GC::Ptr<Environment> reserved_environment, URL::URL top_level_creation_url, URL::Origin top_level_origin) | ||||
| { | ||||
|     // 1. Let realm be the value of execution context's Realm component.
 | ||||
|     auto realm = execution_context->realm; | ||||
|  | @ -83,7 +83,7 @@ void WindowEnvironmentSettingsObject::setup(Page& page, URL::URL const& creation | |||
| } | ||||
| 
 | ||||
| // https://html.spec.whatwg.org/multipage/window-object.html#script-settings-for-window-objects:responsible-document
 | ||||
| JS::GCPtr<DOM::Document> WindowEnvironmentSettingsObject::responsible_document() | ||||
| GC::Ptr<DOM::Document> WindowEnvironmentSettingsObject::responsible_document() | ||||
| { | ||||
|     // Return window's associated Document.
 | ||||
|     return m_window->associated_document(); | ||||
|  |  | |||
|  | @ -12,15 +12,15 @@ | |||
| namespace Web::HTML { | ||||
| 
 | ||||
| class WindowEnvironmentSettingsObject final : public EnvironmentSettingsObject { | ||||
|     JS_CELL(WindowEnvironmentSettingsObject, EnvironmentSettingsObject); | ||||
|     JS_DECLARE_ALLOCATOR(WindowEnvironmentSettingsObject); | ||||
|     GC_CELL(WindowEnvironmentSettingsObject, EnvironmentSettingsObject); | ||||
|     GC_DECLARE_ALLOCATOR(WindowEnvironmentSettingsObject); | ||||
| 
 | ||||
| public: | ||||
|     static void setup(Page&, URL::URL const& creation_url, NonnullOwnPtr<JS::ExecutionContext>, JS::GCPtr<Environment>, URL::URL top_level_creation_url, URL::Origin top_level_origin); | ||||
|     static void setup(Page&, URL::URL const& creation_url, NonnullOwnPtr<JS::ExecutionContext>, GC::Ptr<Environment>, URL::URL top_level_creation_url, URL::Origin top_level_origin); | ||||
| 
 | ||||
|     virtual ~WindowEnvironmentSettingsObject() override; | ||||
| 
 | ||||
|     virtual JS::GCPtr<DOM::Document> responsible_document() override; | ||||
|     virtual GC::Ptr<DOM::Document> responsible_document() override; | ||||
|     virtual String api_url_character_encoding() override; | ||||
|     virtual URL::URL api_base_url() override; | ||||
|     virtual URL::Origin origin() override; | ||||
|  | @ -32,7 +32,7 @@ private: | |||
| 
 | ||||
|     virtual void visit_edges(JS::Cell::Visitor&) override; | ||||
| 
 | ||||
|     JS::GCPtr<Window> m_window; | ||||
|     GC::Ptr<Window> m_window; | ||||
| }; | ||||
| 
 | ||||
| } | ||||
|  |  | |||
|  | @ -13,10 +13,10 @@ | |||
| 
 | ||||
| namespace Web::HTML { | ||||
| 
 | ||||
| JS_DEFINE_ALLOCATOR(WorkerEnvironmentSettingsObject); | ||||
| GC_DEFINE_ALLOCATOR(WorkerEnvironmentSettingsObject); | ||||
| 
 | ||||
| // https://html.spec.whatwg.org/multipage/workers.html#set-up-a-worker-environment-settings-object
 | ||||
| JS::NonnullGCPtr<WorkerEnvironmentSettingsObject> WorkerEnvironmentSettingsObject::setup(JS::NonnullGCPtr<Page> page, NonnullOwnPtr<JS::ExecutionContext> execution_context, SerializedEnvironmentSettingsObject const& outside_settings, HighResolutionTime::DOMHighResTimeStamp unsafe_worker_creation_time) | ||||
| GC::Ref<WorkerEnvironmentSettingsObject> WorkerEnvironmentSettingsObject::setup(GC::Ref<Page> page, NonnullOwnPtr<JS::ExecutionContext> execution_context, SerializedEnvironmentSettingsObject const& outside_settings, HighResolutionTime::DOMHighResTimeStamp unsafe_worker_creation_time) | ||||
| { | ||||
|     (void)unsafe_worker_creation_time; | ||||
| 
 | ||||
|  |  | |||
|  | @ -14,21 +14,21 @@ namespace Web::HTML { | |||
| 
 | ||||
| class WorkerEnvironmentSettingsObject final | ||||
|     : public EnvironmentSettingsObject { | ||||
|     JS_CELL(WorkerEnvironmentSettingsObject, EnvironmentSettingsObject); | ||||
|     JS_DECLARE_ALLOCATOR(WorkerEnvironmentSettingsObject); | ||||
|     GC_CELL(WorkerEnvironmentSettingsObject, EnvironmentSettingsObject); | ||||
|     GC_DECLARE_ALLOCATOR(WorkerEnvironmentSettingsObject); | ||||
| 
 | ||||
| public: | ||||
|     WorkerEnvironmentSettingsObject(NonnullOwnPtr<JS::ExecutionContext> execution_context, JS::NonnullGCPtr<WorkerGlobalScope> global_scope) | ||||
|     WorkerEnvironmentSettingsObject(NonnullOwnPtr<JS::ExecutionContext> execution_context, GC::Ref<WorkerGlobalScope> global_scope) | ||||
|         : EnvironmentSettingsObject(move(execution_context)) | ||||
|         , m_global_scope(global_scope) | ||||
|     { | ||||
|     } | ||||
| 
 | ||||
|     static JS::NonnullGCPtr<WorkerEnvironmentSettingsObject> setup(JS::NonnullGCPtr<Page> page, NonnullOwnPtr<JS::ExecutionContext> execution_context, SerializedEnvironmentSettingsObject const& outside_settings, HighResolutionTime::DOMHighResTimeStamp unsafe_worker_creation_time); | ||||
|     static GC::Ref<WorkerEnvironmentSettingsObject> setup(GC::Ref<Page> page, NonnullOwnPtr<JS::ExecutionContext> execution_context, SerializedEnvironmentSettingsObject const& outside_settings, HighResolutionTime::DOMHighResTimeStamp unsafe_worker_creation_time); | ||||
| 
 | ||||
|     virtual ~WorkerEnvironmentSettingsObject() override = default; | ||||
| 
 | ||||
|     JS::GCPtr<DOM::Document> responsible_document() override { return nullptr; } | ||||
|     GC::Ptr<DOM::Document> responsible_document() override { return nullptr; } | ||||
|     String api_url_character_encoding() override { return m_api_url_character_encoding; } | ||||
|     URL::URL api_base_url() override; | ||||
|     URL::Origin origin() override; | ||||
|  | @ -41,7 +41,7 @@ private: | |||
|     String m_api_url_character_encoding; | ||||
|     URL::Origin m_origin; | ||||
| 
 | ||||
|     JS::NonnullGCPtr<WorkerGlobalScope> m_global_scope; | ||||
|     GC::Ref<WorkerGlobalScope> m_global_scope; | ||||
| }; | ||||
| 
 | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Shannon Booth
						Shannon Booth