ShadowRealmGlobalScope.h 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. /*
  2. * Copyright (c) 2024, Shannon Booth <shannon@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <LibWeb/Bindings/Intrinsics.h>
  8. #include <LibWeb/Bindings/ShadowRealmGlobalScopeGlobalMixin.h>
  9. #include <LibWeb/DOM/EventTarget.h>
  10. #include <LibWeb/HTML/UniversalGlobalScope.h>
  11. namespace Web::HTML {
  12. // https://whatpr.org/html/9893/webappapis.html#shadowrealmglobalscope
  13. class ShadowRealmGlobalScope
  14. : public DOM::EventTarget
  15. , public UniversalGlobalScopeMixin
  16. , public Bindings::ShadowRealmGlobalScopeGlobalMixin {
  17. WEB_PLATFORM_OBJECT(ShadowRealmGlobalScope, DOM::EventTarget);
  18. GC_DECLARE_ALLOCATOR(ShadowRealmGlobalScope);
  19. public:
  20. virtual ~ShadowRealmGlobalScope() override;
  21. static GC::Ref<ShadowRealmGlobalScope> create(JS::Realm&);
  22. virtual Bindings::PlatformObject& this_impl() override { return *this; }
  23. virtual Bindings::PlatformObject const& this_impl() const override { return *this; }
  24. // https://whatpr.org/html/9893/webappapis.html#dom-shadowrealmglobalscope-self
  25. GC::Ref<ShadowRealmGlobalScope> self()
  26. {
  27. // The self getter steps are to return this.
  28. return *this;
  29. }
  30. using UniversalGlobalScopeMixin::atob;
  31. using UniversalGlobalScopeMixin::btoa;
  32. using UniversalGlobalScopeMixin::queue_microtask;
  33. using UniversalGlobalScopeMixin::structured_clone;
  34. void initialize_web_interfaces();
  35. protected:
  36. explicit ShadowRealmGlobalScope(JS::Realm&);
  37. virtual void initialize(JS::Realm&) override;
  38. virtual void visit_edges(Cell::Visitor&) override;
  39. };
  40. }