1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 03:57:43 +00:00

LibWeb: Use `Vector<Handle<Object>>` in transfer variants of serialize

Also trap the invalid object index inserted for transferred values in
deserialization. In the future we should avoid inserting that
placeholder value in the data stream at all.
This commit is contained in:
Andrew Kaster 2023-12-12 13:30:16 -07:00 committed by Andrew Kaster
parent 73697058b0
commit 84ac6a454f
2 changed files with 17 additions and 12 deletions

View file

@ -37,7 +37,7 @@ struct SerializedTransferRecord {
struct DeserializedTransferRecord {
JS::Value deserialized;
JS::MarkedVector<JS::Value> transferred_values;
Vector<JS::Handle<JS::Object>> transferred_values;
};
enum class TransferType : u8 {
@ -50,7 +50,7 @@ WebIDL::ExceptionOr<SerializationRecord> structured_serialize_internal(JS::VM& v
WebIDL::ExceptionOr<JS::Value> structured_deserialize(JS::VM& vm, SerializationRecord const& serialized, JS::Realm& target_realm, Optional<DeserializationMemory>);
WebIDL::ExceptionOr<SerializedTransferRecord> structured_serialize_with_transfer(JS::VM& vm, JS::Value value, JS::MarkedVector<JS::Value> transfer_list);
WebIDL::ExceptionOr<SerializedTransferRecord> structured_serialize_with_transfer(JS::VM& vm, JS::Value value, Vector<JS::Handle<JS::Object>> const& transfer_list);
WebIDL::ExceptionOr<DeserializedTransferRecord> structured_deserialize_with_transfer(JS::VM& vm, SerializedTransferRecord const&);
}