/* * Copyright (c) 2024, Andrew Kaster * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include #include namespace Web::HTML { enum class CanUseCrossOriginIsolatedAPIs : u8 { No, Yes, }; struct SerializedDocument { URL::URL url; bool relevant_settings_object_is_secure_context { false }; }; struct SerializedWindow { SerializedDocument associated_document; }; struct SerializedWorkerGlobalScope { bool relevant_settings_object_is_secure_context { false }; }; using SerializedGlobal = Variant; struct SerializedEnvironmentSettingsObject { String id; URL::URL creation_url; Optional top_level_creation_url; Optional top_level_origin; URL::URL api_base_url; URL::Origin origin; bool has_cross_site_ancestor; SerializedPolicyContainer policy_container; CanUseCrossOriginIsolatedAPIs cross_origin_isolated_capability; double time_origin; SerializedGlobal global; }; } namespace IPC { template<> WEB_API ErrorOr encode(Encoder&, Web::HTML::SerializedWindow const&); template<> WEB_API ErrorOr decode(Decoder&); template<> WEB_API ErrorOr encode(Encoder&, Web::HTML::SerializedWorkerGlobalScope const&); template<> WEB_API ErrorOr decode(Decoder&); template<> WEB_API ErrorOr encode(Encoder&, Web::HTML::SerializedEnvironmentSettingsObject const&); template<> WEB_API ErrorOr decode(Decoder&); }