#include "third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer.h"
#include "base/auto_reset.h"
#include "base/feature_list.h"
#include "base/numerics/byte_conversions.h"
#include "third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom-blink.h"
#include "third_party/blink/public/platform/web_blob_info.h"
#include "third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h"
#include "third_party/blink/renderer/bindings/core/v8/serialization/serialization_tag.h"
#include "third_party/blink/renderer/bindings/core/v8/to_v8_traits.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_blob.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_dom_exception.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_dom_matrix.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_dom_matrix_read_only.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_dom_point.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_dom_point_read_only.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_dom_quad.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_dom_rect.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_dom_rect_read_only.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_file.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_file_list.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_image_bitmap.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_image_data.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_message_port.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_mojo_handle.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_offscreen_canvas.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_readable_stream.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_throw_dom_exception.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_transform_stream.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_writable_stream.h"
#include "third_party/blink/renderer/core/dom/dom_exception.h"
#include "third_party/blink/renderer/core/execution_context/execution_context.h"
#include "third_party/blink/renderer/core/fileapi/blob.h"
#include "third_party/blink/renderer/core/fileapi/file.h"
#include "third_party/blink/renderer/core/fileapi/file_list.h"
#include "third_party/blink/renderer/core/geometry/dom_matrix.h"
#include "third_party/blink/renderer/core/geometry/dom_matrix_read_only.h"
#include "third_party/blink/renderer/core/geometry/dom_point.h"
#include "third_party/blink/renderer/core/geometry/dom_point_read_only.h"
#include "third_party/blink/renderer/core/geometry/dom_quad.h"
#include "third_party/blink/renderer/core/geometry/dom_rect.h"
#include "third_party/blink/renderer/core/geometry/dom_rect_read_only.h"
#include "third_party/blink/renderer/core/html/canvas/image_data.h"
#include "third_party/blink/renderer/core/html/fenced_frame/fenced_frame_config.h"
#include "third_party/blink/renderer/core/imagebitmap/image_bitmap.h"
#include "third_party/blink/renderer/core/messaging/message_port.h"
#include "third_party/blink/renderer/core/mojo/mojo_handle.h"
#include "third_party/blink/renderer/core/offscreencanvas/offscreen_canvas.h"
#include "third_party/blink/renderer/core/streams/readable_stream.h"
#include "third_party/blink/renderer/core/streams/transform_stream.h"
#include "third_party/blink/renderer/core/streams/writable_stream.h"
#include "third_party/blink/renderer/core/typed_arrays/dom_array_buffer_base.h"
#include "third_party/blink/renderer/platform/bindings/script_state.h"
#include "third_party/blink/renderer/platform/bindings/v8_dom_wrapper.h"
#include "third_party/blink/renderer/platform/file_metadata.h"
#include "third_party/blink/renderer/platform/instrumentation/use_counter.h"
#include "third_party/blink/renderer/platform/runtime_enabled_features.h"
#include "third_party/blink/renderer/platform/wtf/allocator/partitions.h"
#include "third_party/blink/renderer/platform/wtf/date_math.h"
#include "third_party/blink/renderer/platform/wtf/text/string_utf8_adaptor.h"
namespace blink {
bool V8ScriptValueSerializer::ExtractTransferable(
v8::Isolate* isolate,
v8::Local<v8::Value> object,
wtf_size_t object_index,
Transferables& transferables,
ExceptionState& exception_state) { … }
V8ScriptValueSerializer::V8ScriptValueSerializer(ScriptState* script_state,
const Options& options)
: … { … }
scoped_refptr<SerializedScriptValue> V8ScriptValueSerializer::Serialize(
v8::Local<v8::Value> value,
ExceptionState& exception_state) { … }
void V8ScriptValueSerializer::PrepareTransfer(ExceptionState& exception_state) { … }
void V8ScriptValueSerializer::FinalizeTransfer(
ExceptionState& exception_state) { … }
void V8ScriptValueSerializer::WriteUnguessableToken(
const base::UnguessableToken& token) { … }
void V8ScriptValueSerializer::WriteUTF8String(const StringView& string) { … }
bool V8ScriptValueSerializer::WriteDOMObject(ScriptWrappable* wrappable,
ExceptionState& exception_state) { … }
bool V8ScriptValueSerializer::WriteFile(File* file,
ExceptionState& exception_state) { … }
void V8ScriptValueSerializer::ThrowDataCloneError(
v8::Local<v8::String> v8_message) { … }
v8::Maybe<bool> V8ScriptValueSerializer::IsHostObject(
v8::Isolate* isolate,
v8::Local<v8::Object> object) { … }
v8::Maybe<bool> V8ScriptValueSerializer::WriteHostObject(
v8::Isolate* isolate,
v8::Local<v8::Object> object) { … }
namespace {
DOMSharedArrayBuffer* ToSharedArrayBuffer(v8::Isolate* isolate,
v8::Local<v8::Value> value,
ExceptionState& exception_state) { … }
}
v8::Maybe<uint32_t> V8ScriptValueSerializer::GetSharedArrayBufferId(
v8::Isolate* isolate,
v8::Local<v8::SharedArrayBuffer> v8_shared_array_buffer) { … }
v8::Maybe<uint32_t> V8ScriptValueSerializer::GetWasmModuleTransferId(
v8::Isolate* isolate,
v8::Local<v8::WasmModuleObject> module) { … }
void* V8ScriptValueSerializer::ReallocateBufferMemory(void* old_buffer,
size_t size,
size_t* actual_size) { … }
void V8ScriptValueSerializer::FreeBufferMemory(void* buffer) { … }
bool V8ScriptValueSerializer::AdoptSharedValueConveyor(
v8::Isolate* isolate,
v8::SharedValueConveyor&& conveyor) { … }
}