/* * Copyright (c) 2022, Andrew Kaster * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include namespace Web::Bindings { struct PrincipalHostDefined : public HostDefined { PrincipalHostDefined(GC::Ref eso, GC::Ref intrinsics, GC::Ref page) : HostDefined(intrinsics) , environment_settings_object(eso) , page(page) { } virtual ~PrincipalHostDefined() override = default; virtual void visit_edges(JS::Cell::Visitor& visitor) override; GC::Ref environment_settings_object; GC::Ref page; }; [[nodiscard]] inline HTML::EnvironmentSettingsObject& principal_host_defined_environment_settings_object(JS::Realm& realm) { return *as(realm.host_defined())->environment_settings_object; } [[nodiscard]] inline HTML::EnvironmentSettingsObject const& principal_host_defined_environment_settings_object(JS::Realm const& realm) { return *as(realm.host_defined())->environment_settings_object; } [[nodiscard]] inline Page& principal_host_defined_page(JS::Realm& realm) { return *as(realm.host_defined())->page; } }