Chromium Code Reviews| Index: content/renderer/v8_value_converter_impl.cc |
| diff --git a/content/renderer/v8_value_converter_impl.cc b/content/renderer/v8_value_converter_impl.cc |
| index d12b26bdf07eb2383b0f5d92bcc0217d713f7f1b..52a7e57a531a05b11427b09fa5f65465f5bde401 100644 |
| --- a/content/renderer/v8_value_converter_impl.cc |
| +++ b/content/renderer/v8_value_converter_impl.cc |
| @@ -153,7 +153,8 @@ v8::Handle<v8::Value> V8ValueConverterImpl::ToV8Value( |
| const base::Value* value, v8::Handle<v8::Context> context) const { |
| v8::Context::Scope context_scope(context); |
| v8::EscapableHandleScope handle_scope(context->GetIsolate()); |
| - return handle_scope.Escape(ToV8ValueImpl(context->GetIsolate(), value)); |
| + return handle_scope.Escape( |
| + ToV8ValueImpl(context->GetIsolate(), context->Global(), value)); |
| } |
| base::Value* V8ValueConverterImpl::FromV8Value( |
| @@ -167,6 +168,7 @@ base::Value* V8ValueConverterImpl::FromV8Value( |
| v8::Local<v8::Value> V8ValueConverterImpl::ToV8ValueImpl( |
| v8::Isolate* isolate, |
| + v8::Handle<v8::Object> creationContext, |
|
darin (slow to review)
2014/06/10 04:52:01
ditto... there are more. please fix-up code to mat
tasak
2014/06/10 05:09:15
Done.
|
| const base::Value* value) const { |
| CHECK(value); |
| switch (value->GetType()) { |
| @@ -199,14 +201,18 @@ v8::Local<v8::Value> V8ValueConverterImpl::ToV8ValueImpl( |
| } |
| case base::Value::TYPE_LIST: |
| - return ToV8Array(isolate, static_cast<const base::ListValue*>(value)); |
| + return ToV8Array( |
| + isolate, creationContext, static_cast<const base::ListValue*>(value)); |
| case base::Value::TYPE_DICTIONARY: |
| return ToV8Object(isolate, |
| + creationContext, |
| static_cast<const base::DictionaryValue*>(value)); |
| case base::Value::TYPE_BINARY: |
| - return ToArrayBuffer(static_cast<const base::BinaryValue*>(value)); |
| + return ToArrayBuffer(isolate, |
| + creationContext, |
| + static_cast<const base::BinaryValue*>(value)); |
| default: |
| LOG(ERROR) << "Unexpected value type: " << value->GetType(); |
| @@ -216,6 +222,7 @@ v8::Local<v8::Value> V8ValueConverterImpl::ToV8ValueImpl( |
| v8::Handle<v8::Value> V8ValueConverterImpl::ToV8Array( |
| v8::Isolate* isolate, |
| + v8::Handle<v8::Object> creationContext, |
| const base::ListValue* val) const { |
| v8::Handle<v8::Array> result(v8::Array::New(isolate, val->GetSize())); |
| @@ -223,7 +230,8 @@ v8::Handle<v8::Value> V8ValueConverterImpl::ToV8Array( |
| const base::Value* child = NULL; |
| CHECK(val->Get(i, &child)); |
| - v8::Handle<v8::Value> child_v8 = ToV8ValueImpl(isolate, child); |
| + v8::Handle<v8::Value> child_v8 = |
| + ToV8ValueImpl(isolate, creationContext, child); |
| CHECK(!child_v8.IsEmpty()); |
| v8::TryCatch try_catch; |
| @@ -237,13 +245,15 @@ v8::Handle<v8::Value> V8ValueConverterImpl::ToV8Array( |
| v8::Handle<v8::Value> V8ValueConverterImpl::ToV8Object( |
| v8::Isolate* isolate, |
| + v8::Handle<v8::Object> creationContext, |
| const base::DictionaryValue* val) const { |
| v8::Handle<v8::Object> result(v8::Object::New(isolate)); |
| for (base::DictionaryValue::Iterator iter(*val); |
| !iter.IsAtEnd(); iter.Advance()) { |
| const std::string& key = iter.key(); |
| - v8::Handle<v8::Value> child_v8 = ToV8ValueImpl(isolate, &iter.value()); |
| + v8::Handle<v8::Value> child_v8 = |
| + ToV8ValueImpl(isolate, creationContext, &iter.value()); |
| CHECK(!child_v8.IsEmpty()); |
| v8::TryCatch try_catch; |
| @@ -261,11 +271,14 @@ v8::Handle<v8::Value> V8ValueConverterImpl::ToV8Object( |
| } |
| v8::Handle<v8::Value> V8ValueConverterImpl::ToArrayBuffer( |
| + v8::Isolate* isolate, |
| + v8::Handle<v8::Object> creationContext, |
| 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); |
| + return blink::WebArrayBufferConverter::toV8Value( |
| + &buffer, creationContext, isolate); |
| } |
| base::Value* V8ValueConverterImpl::FromV8ValueImpl( |
| @@ -418,7 +431,7 @@ base::Value* V8ValueConverterImpl::FromV8ArrayBuffer( |
| size_t length = 0; |
| scoped_ptr<blink::WebArrayBuffer> array_buffer( |
| - blink::WebArrayBufferConverter::createFromV8Value(val)); |
| + blink::WebArrayBufferConverter::createFromV8Value(val, isolate)); |
| scoped_ptr<blink::WebArrayBufferView> view; |
| if (array_buffer) { |
| data = reinterpret_cast<char*>(array_buffer->data()); |