/* * Copyright (c) 2021-2022, Andreas Kling * Copyright (c) 2021-2023, Luke Wilde * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include #include #include namespace Web::Bindings { struct WebEngineCustomData final : public JS::VM::CustomData { virtual ~WebEngineCustomData() override = default; virtual void spin_event_loop_until(GC::Root> goal_condition) override; HTML::Agent agent; }; struct WebEngineCustomJobCallbackData final : public JS::JobCallback::CustomData { WebEngineCustomJobCallbackData(JS::Realm& incumbent_realm, OwnPtr active_script_context) : incumbent_realm(incumbent_realm) , active_script_context(move(active_script_context)) { } virtual ~WebEngineCustomJobCallbackData() override = default; GC::Ref incumbent_realm; OwnPtr active_script_context; }; HTML::Script* active_script(); ErrorOr initialize_main_thread_vm(HTML::EventLoop::Type); JS::VM& main_thread_vm(); void queue_mutation_observer_microtask(DOM::Document const&); NonnullOwnPtr create_a_new_javascript_realm(JS::VM&, Function create_global_object, Function create_global_this_value); void invoke_custom_element_reactions(Vector>& element_queue); }