LibWeb: Begin serializing global object as part of serialized ESO

Instead of passing through window's associated document's URL as
an extra argument to starting up a worker. This will allow for
improving the representation of 'outside settings' when setting
up a Worker.
This commit is contained in:
Shannon Booth
2026-02-21 19:11:48 +01:00
committed by Jelle Raaijmakers
parent 513830532b
commit 665654a1c4
Notes: github-actions[bot] 2026-02-23 10:43:27 +00:00
9 changed files with 77 additions and 14 deletions

View File

@@ -1,5 +1,6 @@
/*
* Copyright (c) 2024, Andrew Kaster <akaster@serenityos.org>
* Copyright (c) 2026, Shannon Booth <shannon@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
@@ -10,6 +11,36 @@
namespace IPC {
template<>
ErrorOr<void> encode(Encoder& encoder, Web::HTML::SerializedWindow const& window)
{
TRY(encoder.encode(window.associated_document.url));
return {};
}
template<>
ErrorOr<Web::HTML::SerializedWindow> decode(Decoder& decoder)
{
return Web::HTML::SerializedWindow {
.associated_document {
.url = TRY(decoder.decode<URL::URL>()),
},
};
}
template<>
ErrorOr<void> encode(Encoder&, Web::HTML::SerializedWorkerGlobalScope const&)
{
return {};
}
template<>
ErrorOr<Web::HTML::SerializedWorkerGlobalScope> decode(Decoder&)
{
return Web::HTML::SerializedWorkerGlobalScope {};
}
template<>
ErrorOr<void> encode(Encoder& encoder, Web::HTML::SerializedEnvironmentSettingsObject const& object)
{
@@ -23,6 +54,7 @@ ErrorOr<void> encode(Encoder& encoder, Web::HTML::SerializedEnvironmentSettingsO
TRY(encoder.encode(object.policy_container));
TRY(encoder.encode(object.cross_origin_isolated_capability));
TRY(encoder.encode(object.time_origin));
TRY(encoder.encode(object.global));
return {};
}
@@ -41,6 +73,7 @@ ErrorOr<Web::HTML::SerializedEnvironmentSettingsObject> decode(Decoder& decoder)
.policy_container = TRY(decoder.decode<Web::HTML::SerializedPolicyContainer>()),
.cross_origin_isolated_capability = TRY(decoder.decode<Web::HTML::CanUseCrossOriginIsolatedAPIs>()),
.time_origin = TRY(decoder.decode<double>()),
.global = TRY(decoder.decode<Web::HTML::SerializedGlobal>()),
};
}