diff options
author | Andrew Kaster <akaster@serenityos.org> | 2022-09-30 20:11:51 -0600 |
---|---|---|
committer | Linus Groh <mail@linusgroh.de> | 2022-10-01 21:05:32 +0100 |
commit | 691a7070f414238c0e9830899a0e750af9b00e1e (patch) | |
tree | 89c6da7972f8a0693ffec137a29181bdedfc3558 /Userland/Libraries/LibWeb | |
parent | 56b381aac0db837b1b840c482edd9a8d67c2600e (diff) | |
download | serenity-691a7070f414238c0e9830899a0e750af9b00e1e.zip |
LibWeb: Remove the internal window object from WebEngineCustomData
Now that no one needs a Window just to create prototypes, we can remove
the internal window Object from the main thread VM and get rid of the
HTML::Window include for it.
This finally solves the reference binding to nullptr error in ladybird
that shows up when compiling it with ASAN.
Diffstat (limited to 'Userland/Libraries/LibWeb')
-rw-r--r-- | Userland/Libraries/LibWeb/Bindings/MainThreadVM.cpp | 15 | ||||
-rw-r--r-- | Userland/Libraries/LibWeb/Bindings/MainThreadVM.h | 6 |
2 files changed, 2 insertions, 19 deletions
diff --git a/Userland/Libraries/LibWeb/Bindings/MainThreadVM.cpp b/Userland/Libraries/LibWeb/Bindings/MainThreadVM.cpp index 6f8f02219a..684a92e2e1 100644 --- a/Userland/Libraries/LibWeb/Bindings/MainThreadVM.cpp +++ b/Userland/Libraries/LibWeb/Bindings/MainThreadVM.cpp @@ -9,6 +9,7 @@ #include <LibJS/Runtime/Array.h> #include <LibJS/Runtime/Environment.h> #include <LibJS/Runtime/FinalizationRegistry.h> +#include <LibJS/Runtime/GlobalObject.h> #include <LibJS/Runtime/NativeFunction.h> #include <LibJS/Runtime/VM.h> #include <LibWeb/Bindings/Intrinsics.h> @@ -306,12 +307,7 @@ JS::VM& main_thread_vm() // NOTE: We push a dummy execution context onto the JS execution context stack, // just to make sure that it's never empty. auto& custom_data = *verify_cast<WebEngineCustomData>(vm->custom_data()); - custom_data.root_execution_context = MUST(JS::Realm::initialize_host_defined_realm( - *vm, [&](JS::Realm& realm) -> JS::Object* { - custom_data.internal_window_object = JS::make_handle(*HTML::Window::create(realm)); - return custom_data.internal_window_object.cell(); - }, - nullptr)); + custom_data.root_execution_context = MUST(JS::Realm::initialize_host_defined_realm(*vm, nullptr, nullptr)); auto* root_realm = custom_data.root_execution_context->realm; auto* intrinsics = root_realm->heap().allocate<Intrinsics>(*root_realm, *root_realm); @@ -323,13 +319,6 @@ JS::VM& main_thread_vm() return *vm; } -HTML::Window& main_thread_internal_window_object() -{ - auto& vm = main_thread_vm(); - auto& custom_data = verify_cast<WebEngineCustomData>(*vm.custom_data()); - return *custom_data.internal_window_object; -} - // https://dom.spec.whatwg.org/#queue-a-mutation-observer-compound-microtask void queue_mutation_observer_microtask(DOM::Document& document) { diff --git a/Userland/Libraries/LibWeb/Bindings/MainThreadVM.h b/Userland/Libraries/LibWeb/Bindings/MainThreadVM.h index 62eef59b66..a445ee7e4c 100644 --- a/Userland/Libraries/LibWeb/Bindings/MainThreadVM.h +++ b/Userland/Libraries/LibWeb/Bindings/MainThreadVM.h @@ -13,7 +13,6 @@ #include <LibJS/Runtime/VM.h> #include <LibWeb/DOM/MutationObserver.h> #include <LibWeb/HTML/EventLoop/EventLoop.h> -#include <LibWeb/HTML/Window.h> namespace Web::Bindings { @@ -34,10 +33,6 @@ struct WebEngineCustomData final : public JS::VM::CustomData { Vector<JS::Handle<DOM::MutationObserver>> mutation_observers; OwnPtr<JS::ExecutionContext> root_execution_context; - - // This object is used as the global object for GC-allocated objects that don't - // belong to a web-facing global object. - JS::Handle<HTML::Window> internal_window_object; }; struct WebEngineCustomJobCallbackData final : public JS::JobCallback::CustomData { @@ -55,7 +50,6 @@ struct WebEngineCustomJobCallbackData final : public JS::JobCallback::CustomData HTML::ClassicScript* active_script(); JS::VM& main_thread_vm(); -HTML::Window& main_thread_internal_window_object(); void queue_mutation_observer_microtask(DOM::Document&); NonnullOwnPtr<JS::ExecutionContext> create_a_new_javascript_realm(JS::VM&, Function<JS::Object*(JS::Realm&)> create_global_object, Function<JS::Object*(JS::Realm&)> create_global_this_value); |