1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 08:58:11 +00:00

LibWeb: Support [de]serialization for {Map, Set, Object, Array} objects

This commit is contained in:
Idan Horowitz 2023-11-11 20:14:46 +02:00 committed by Andreas Kling
parent 4e89ec7fd5
commit 20734ac335
8 changed files with 447 additions and 190 deletions

View file

@ -21,17 +21,14 @@
namespace Web::HTML {
using SerializationRecord = Vector<u32>;
struct SerializationRange {
u64 start = 0;
u64 end = 0;
};
using SerializationMemory = HashMap<JS::Handle<JS::Value>, SerializationRange>;
using SerializationMemory = HashMap<JS::Handle<JS::Value>, u32>;
using DeserializationMemory = JS::MarkedVector<JS::Value>;
WebIDL::ExceptionOr<SerializationRecord> structured_serialize(JS::VM& vm, JS::Value);
WebIDL::ExceptionOr<SerializationRecord> structured_serialize_for_storage(JS::VM& vm, JS::Value);
WebIDL::ExceptionOr<SerializationRecord> structured_serialize_internal(JS::VM& vm, JS::Value, bool for_storage, SerializationMemory&);
WebIDL::ExceptionOr<JS::Value> structured_deserialize(JS::VM& vm, SerializationRecord const& serialized, JS::Realm& target_realm, Optional<SerializationMemory>);
WebIDL::ExceptionOr<JS::Value> structured_deserialize(JS::VM& vm, SerializationRecord const& serialized, JS::Realm& target_realm, Optional<DeserializationMemory>);
// TODO: structured_[de]serialize_with_transfer