1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 16:37:35 +00:00

LibWeb: Add abstract class Serializable

This adds the abstract class Serializable which platform objects defined
as Serializable objects can implement to support their appropriate
serialization and deserialization steps.
This commit is contained in:
Kenneth Myhra 2024-02-23 17:25:37 +01:00 committed by Andrew Kaster
parent dcf5ff5178
commit fc12402b49

View file

@ -0,0 +1,27 @@
/*
* Copyright (c) 2024, Kenneth Myhra <kennethmyhra@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <LibJS/Runtime/Realm.h>
#include <LibWeb/HTML/StructuredSerialize.h>
namespace Web::Bindings {
// https://html.spec.whatwg.org/multipage/structured-data.html#serializable-objects
class Serializable {
public:
virtual ~Serializable() = default;
virtual StringView interface_name() const = 0;
// https://html.spec.whatwg.org/multipage/structured-data.html#serialization-steps
virtual WebIDL::ExceptionOr<void> serialization_steps(HTML::SerializationRecord&, bool for_storage) = 0;
// https://html.spec.whatwg.org/multipage/structured-data.html#deserialization-steps
virtual WebIDL::ExceptionOr<void> deserialization_steps(ReadonlySpan<u32> const&, size_t& position) = 0;
};
}