LibWeb/HTML: Track secure context as part of Serialized{Document,Worker}

This is somewhat awkward as the spec refers to 'is secure context'
with respect to these objects 'relevant settings object'. A natural
way of implementing this could be storing a pointer to the relevant
settings object like the JS representations of these objects do
(and then changing is_secure_context to accept this representation
too), but for now it seems much simpler to just store a boolean for
this purpose and sidestep both problems above.
This commit is contained in:
Shannon Booth 2026-02-24 21:33:31 +01:00 committed by Shannon Booth
parent cb6a4683ce
commit 025ddd385b
Notes: github-actions[bot] 2026-02-26 06:24:21 +00:00
3 changed files with 22 additions and 7 deletions

View file

@ -15,6 +15,7 @@ template<>
ErrorOr<void> encode(Encoder& encoder, Web::HTML::SerializedWindow const& window)
{
TRY(encoder.encode(window.associated_document.url));
TRY(encoder.encode(window.associated_document.relevant_settings_object_is_secure_context));
return {};
}
@ -25,20 +26,24 @@ ErrorOr<Web::HTML::SerializedWindow> decode(Decoder& decoder)
return Web::HTML::SerializedWindow {
.associated_document {
.url = TRY(decoder.decode<URL::URL>()),
.relevant_settings_object_is_secure_context = TRY(decoder.decode<bool>()),
},
};
}
template<>
ErrorOr<void> encode(Encoder&, Web::HTML::SerializedWorkerGlobalScope const&)
ErrorOr<void> encode(Encoder& encoder, Web::HTML::SerializedWorkerGlobalScope const& worker_global_scope)
{
TRY(encoder.encode(worker_global_scope.relevant_settings_object_is_secure_context));
return {};
}
template<>
ErrorOr<Web::HTML::SerializedWorkerGlobalScope> decode(Decoder&)
ErrorOr<Web::HTML::SerializedWorkerGlobalScope> decode(Decoder& decoder)
{
return Web::HTML::SerializedWorkerGlobalScope {};
return Web::HTML::SerializedWorkerGlobalScope {
.relevant_settings_object_is_secure_context = TRY(decoder.decode<bool>()),
};
}
template<>