Index: content/child/v8_value_converter_impl.cc |
diff --git a/content/child/v8_value_converter_impl.cc b/content/child/v8_value_converter_impl.cc |
index 5dcf63608cd31a9360fda74eb54bed1c2f0cb166..dd3678809a2f520193b172c53d17f54cb72a0e01 100644 |
--- a/content/child/v8_value_converter_impl.cc |
+++ b/content/child/v8_value_converter_impl.cc |
@@ -17,9 +17,6 @@ |
#include "base/logging.h" |
#include "base/memory/ptr_util.h" |
#include "base/values.h" |
-#include "third_party/WebKit/public/web/WebArrayBuffer.h" |
-#include "third_party/WebKit/public/web/WebArrayBufferConverter.h" |
-#include "third_party/WebKit/public/web/WebArrayBufferView.h" |
#include "v8/include/v8.h" |
namespace content { |
@@ -339,11 +336,11 @@ v8::Local<v8::Value> V8ValueConverterImpl::ToArrayBuffer( |
v8::Isolate* isolate, |
v8::Local<v8::Object> creation_context, |
const base::BinaryValue* value) const { |
- blink::WebArrayBuffer buffer = |
- blink::WebArrayBuffer::create(value->GetSize(), 1); |
- memcpy(buffer.data(), value->GetBuffer(), value->GetSize()); |
- return blink::WebArrayBufferConverter::toV8Value( |
- &buffer, creation_context, isolate); |
+ DCHECK(creation_context->CreationContext() == isolate->GetCurrentContext()); |
+ v8::Local<v8::ArrayBuffer> buffer = |
+ v8::ArrayBuffer::New(isolate, value->GetSize()); |
+ memcpy(buffer->GetContents().Data(), value->GetBuffer(), value->GetSize()); |
+ return buffer; |
} |
std::unique_ptr<base::Value> V8ValueConverterImpl::FromV8ValueImpl( |
@@ -497,27 +494,20 @@ std::unique_ptr<base::Value> V8ValueConverterImpl::FromV8ArrayBuffer( |
return out; |
} |
- char* data = NULL; |
- size_t length = 0; |
- |
- std::unique_ptr<blink::WebArrayBuffer> array_buffer( |
- blink::WebArrayBufferConverter::createFromV8Value(val, isolate)); |
- std::unique_ptr<blink::WebArrayBufferView> view; |
- if (array_buffer) { |
- data = reinterpret_cast<char*>(array_buffer->data()); |
- length = array_buffer->byteLength(); |
+ if (val->IsArrayBuffer()) { |
+ auto contents = val.As<v8::ArrayBuffer>()->GetContents(); |
+ return base::BinaryValue::CreateWithCopiedBuffer( |
+ static_cast<const char*>(contents.Data()), contents.ByteLength()); |
+ } else if (val->IsArrayBufferView()) { |
+ v8::Local<v8::ArrayBufferView> view = val.As<v8::ArrayBufferView>(); |
+ size_t byte_length = view->ByteLength(); |
+ auto buffer = base::MakeUnique<char[]>(byte_length); |
+ view->CopyContents(buffer.get(), byte_length); |
+ return base::MakeUnique<base::BinaryValue>(std::move(buffer), byte_length); |
} else { |
- view.reset(blink::WebArrayBufferView::createFromV8Value(val)); |
- if (view) { |
- data = reinterpret_cast<char*>(view->baseAddress()) + view->byteOffset(); |
- length = view->byteLength(); |
- } |
- } |
- |
- if (data) |
- return base::BinaryValue::CreateWithCopiedBuffer(data, length); |
- else |
+ NOTREACHED() << "Only ArrayBuffer and ArrayBufferView should get here."; |
return nullptr; |
+ } |
} |
std::unique_ptr<base::Value> V8ValueConverterImpl::FromV8Object( |