| Index: third_party/WebKit/Source/bindings/core/v8/serialization/V8ScriptValueSerializer.cpp
|
| diff --git a/third_party/WebKit/Source/bindings/core/v8/serialization/V8ScriptValueSerializer.cpp b/third_party/WebKit/Source/bindings/core/v8/serialization/V8ScriptValueSerializer.cpp
|
| index e652f770e74231b7ed61663400e5de23c38beb9d..5bfb83bff350d9776245bb18d52f7c1106b2847e 100644
|
| --- a/third_party/WebKit/Source/bindings/core/v8/serialization/V8ScriptValueSerializer.cpp
|
| +++ b/third_party/WebKit/Source/bindings/core/v8/serialization/V8ScriptValueSerializer.cpp
|
| @@ -43,15 +43,16 @@ namespace blink {
|
| static const uint32_t kLatestVersion = 16;
|
|
|
| V8ScriptValueSerializer::V8ScriptValueSerializer(
|
| - RefPtr<ScriptState> scriptState)
|
| + RefPtr<ScriptState> scriptState,
|
| + const Options& options)
|
| : m_scriptState(std::move(scriptState)),
|
| m_serializedScriptValue(SerializedScriptValue::create()),
|
| - m_serializer(m_scriptState->isolate(), this) {
|
| -}
|
| + m_serializer(m_scriptState->isolate(), this),
|
| + m_transferables(options.transferables),
|
| + m_blobInfoArray(options.blobInfo) {}
|
|
|
| RefPtr<SerializedScriptValue> V8ScriptValueSerializer::serialize(
|
| v8::Local<v8::Value> value,
|
| - Transferables* transferables,
|
| ExceptionState& exceptionState) {
|
| #if DCHECK_IS_ON()
|
| DCHECK(!m_serializeInvoked);
|
| @@ -61,7 +62,7 @@ RefPtr<SerializedScriptValue> V8ScriptValueSerializer::serialize(
|
| AutoReset<const ExceptionState*> reset(&m_exceptionState, &exceptionState);
|
|
|
| // Prepare to transfer the provided transferables.
|
| - prepareTransfer(transferables, exceptionState);
|
| + prepareTransfer(exceptionState);
|
| if (exceptionState.hadException())
|
| return nullptr;
|
|
|
| @@ -93,15 +94,13 @@ RefPtr<SerializedScriptValue> V8ScriptValueSerializer::serialize(
|
| return std::move(m_serializedScriptValue);
|
| }
|
|
|
| -void V8ScriptValueSerializer::prepareTransfer(Transferables* transferables,
|
| - ExceptionState& exceptionState) {
|
| - if (!transferables)
|
| +void V8ScriptValueSerializer::prepareTransfer(ExceptionState& exceptionState) {
|
| + if (!m_transferables)
|
| return;
|
| - m_transferables = transferables;
|
|
|
| // Transfer array buffers.
|
| - for (uint32_t i = 0; i < transferables->arrayBuffers.size(); i++) {
|
| - DOMArrayBufferBase* arrayBuffer = transferables->arrayBuffers[i].get();
|
| + for (uint32_t i = 0; i < m_transferables->arrayBuffers.size(); i++) {
|
| + DOMArrayBufferBase* arrayBuffer = m_transferables->arrayBuffers[i].get();
|
| if (!arrayBuffer->isShared()) {
|
| v8::Local<v8::Value> wrapper = ToV8(arrayBuffer, m_scriptState.get());
|
| m_serializer.TransferArrayBuffer(
|
|
|