From 691a7070f414238c0e9830899a0e750af9b00e1e Mon Sep 17 00:00:00 2001 From: Andrew Kaster Date: Fri, 30 Sep 2022 20:11:51 -0600 Subject: [PATCH] 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. --- .../Libraries/LibWeb/Bindings/MainThreadVM.cpp | 15 ++------------- 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 #include #include +#include #include #include #include @@ -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(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(*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(*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 #include #include -#include namespace Web::Bindings { @@ -34,10 +33,6 @@ struct WebEngineCustomData final : public JS::VM::CustomData { Vector> mutation_observers; OwnPtr 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 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 create_a_new_javascript_realm(JS::VM&, Function create_global_object, Function create_global_this_value);