Chromium Code Reviews| Index: third_party/WebKit/Source/bindings/core/v8/SerializedScriptValue.cpp |
| diff --git a/third_party/WebKit/Source/bindings/core/v8/SerializedScriptValue.cpp b/third_party/WebKit/Source/bindings/core/v8/SerializedScriptValue.cpp |
| index 249ac584b9ee231221f07daa6537ff2e10b2421c..e6753c7bc1ad9a2b285272b5ecf8e1f91d21cd91 100644 |
| --- a/third_party/WebKit/Source/bindings/core/v8/SerializedScriptValue.cpp |
| +++ b/third_party/WebKit/Source/bindings/core/v8/SerializedScriptValue.cpp |
| @@ -30,6 +30,7 @@ |
| #include "bindings/core/v8/SerializedScriptValue.h" |
| +#include <algorithm> |
| #include <memory> |
| #include "bindings/core/v8/ExceptionState.h" |
| #include "bindings/core/v8/IDLTypes.h" |
| @@ -443,6 +444,21 @@ bool SerializedScriptValue::ExtractTransferables( |
| return true; |
| } |
| +ArrayBufferArray SerializedScriptValue::ExtractNonSharedArrayBuffers( |
| + Transferables& transferables) { |
| + ArrayBufferArray& array_buffers = transferables.array_buffers; |
| + ArrayBufferArray result; |
| + auto non_shared_begin = |
| + std::partition(array_buffers.begin(), array_buffers.end(), |
| + [](Member<DOMArrayBufferBase>& array_buffer) { |
| + return array_buffer->IsShared(); |
| + }); |
| + result.AppendRange(non_shared_begin, array_buffers.end()); |
| + array_buffers.erase(non_shared_begin - array_buffers.begin(), |
| + array_buffers.end() - non_shared_begin); |
|
haraken
2017/05/05 00:52:52
Do we have a test case where shared array buffers
binji
2017/05/05 18:53:39
Nope, but I just added one.
|
| + return result; |
| +} |
| + |
| std::unique_ptr<SerializedScriptValue::ArrayBufferContentsArray> |
| SerializedScriptValue::TransferArrayBufferContents( |
| v8::Isolate* isolate, |