| 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( | 
|  |