/* * Copyright (c) 2024, Andrew Kaster * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include namespace Web::HTML { class EnvironmentSettingsSnapshot final : public EnvironmentSettingsObject { GC_CELL(EnvironmentSettingsSnapshot, EnvironmentSettingsObject); GC_DECLARE_ALLOCATOR(EnvironmentSettingsSnapshot); public: EnvironmentSettingsSnapshot(JS::Realm&, NonnullOwnPtr, SerializedEnvironmentSettingsObject const&); virtual ~EnvironmentSettingsSnapshot() override; virtual GC::Ptr responsible_document() override { return nullptr; } virtual String api_url_character_encoding() const override { return m_api_url_character_encoding; } virtual URL::URL api_base_url() const override { return m_url; } virtual URL::Origin origin() const override { return m_origin; } virtual bool has_cross_site_ancestor() const override { return m_has_cross_site_ancestor; } virtual GC::Ref policy_container() const override { return m_policy_container; } virtual CanUseCrossOriginIsolatedAPIs cross_origin_isolated_capability() const override { return CanUseCrossOriginIsolatedAPIs::No; } virtual double time_origin() const override { return m_time_origin; } protected: virtual void visit_edges(Cell::Visitor&) override; private: String m_api_url_character_encoding; URL::URL m_url; URL::Origin m_origin; bool m_has_cross_site_ancestor; GC::Ref m_policy_container; double m_time_origin { 0 }; }; }