/* * Copyright (c) 2024, Shannon Booth * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include namespace Web::HTML { // https://whatpr.org/html/9893/webappapis.html#shadowrealmglobalscope class ShadowRealmGlobalScope : public DOM::EventTarget , public UniversalGlobalScopeMixin , public Bindings::ShadowRealmGlobalScopeGlobalMixin { WEB_PLATFORM_OBJECT(ShadowRealmGlobalScope, DOM::EventTarget); GC_DECLARE_ALLOCATOR(ShadowRealmGlobalScope); public: virtual ~ShadowRealmGlobalScope() override; static GC::Ref create(JS::Realm&); virtual Bindings::PlatformObject& this_impl() override { return *this; } virtual Bindings::PlatformObject const& this_impl() const override { return *this; } // https://whatpr.org/html/9893/webappapis.html#dom-shadowrealmglobalscope-self GC::Ref self() { // The self getter steps are to return this. return *this; } using UniversalGlobalScopeMixin::atob; using UniversalGlobalScopeMixin::btoa; using UniversalGlobalScopeMixin::queue_microtask; using UniversalGlobalScopeMixin::structured_clone; void initialize_web_interfaces(); protected: explicit ShadowRealmGlobalScope(JS::Realm&); virtual void initialize(JS::Realm&) override; virtual void visit_edges(Cell::Visitor&) override; }; }