Serenity Operating System
at master 34 lines 1.2 kB view raw
1/* 2 * Copyright (c) 2022, Daniel Ehrenberg <dan@littledan.dev> 3 * Copyright (c) 2022, Andrew Kaster <akaster@serenityos.org> 4 * 5 * SPDX-License-Identifier: BSD-2-Clause 6 */ 7 8#pragma once 9 10#include <AK/Result.h> 11#include <AK/Types.h> 12#include <AK/Vector.h> 13#include <LibJS/Forward.h> 14#include <LibWeb/WebIDL/ExceptionOr.h> 15 16// Structured serialize is an entirely different format from IPC because: 17// - It contains representation of type information 18// - It may contain circularities 19// - It is restricted to JS values 20 21namespace Web::HTML { 22 23using SerializationRecord = Vector<u32>; 24using SerializationMemory = HashMap<JS::Handle<JS::Value>, u32>; 25 26WebIDL::ExceptionOr<SerializationRecord> structured_serialize(JS::VM& vm, JS::Value); 27WebIDL::ExceptionOr<SerializationRecord> structured_serialize_for_storage(JS::VM& vm, JS::Value); 28WebIDL::ExceptionOr<SerializationRecord> structured_serialize_internal(JS::VM& vm, JS::Value, bool for_storage, Optional<SerializationMemory>); 29 30WebIDL::ExceptionOr<JS::Value> structured_deserialize(JS::VM& vm, SerializationRecord const& serialized, JS::Realm& target_realm, Optional<SerializationMemory>); 31 32// TODO: structured_[de]serialize_with_transfer 33 34}