Ver Fonte

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.
Kenneth Myhra há 1 ano atrás
pai
commit
fc12402b49
1 ficheiros alterados com 27 adições e 0 exclusões
  1. 27 0
      Userland/Libraries/LibWeb/Bindings/Serializable.h

+ 27 - 0
Userland/Libraries/LibWeb/Bindings/Serializable.h

@@ -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;
+};
+
+}