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 dc32d9fd94961e2ea40ef9fd1bc756349b5fd999..c37160fe5979486981024510777ddf779dbb9040 100644 |
--- a/content/child/v8_value_converter_impl.cc |
+++ b/content/child/v8_value_converter_impl.cc |
@@ -230,6 +230,9 @@ v8::Local<v8::Value> V8ValueConverterImpl::ToV8Array( |
const base::ListValue* val) const { |
v8::Local<v8::Array> result(v8::Array::New(isolate, val->GetSize())); |
+ // TODO(robwu): Callers should pass in the context. |
+ v8::Local<v8::Context> context = isolate->GetCurrentContext(); |
+ |
for (size_t i = 0; i < val->GetSize(); ++i) { |
const base::Value* child = NULL; |
CHECK(val->Get(i, &child)); |
@@ -238,10 +241,10 @@ v8::Local<v8::Value> V8ValueConverterImpl::ToV8Array( |
ToV8ValueImpl(isolate, creation_context, child); |
CHECK(!child_v8.IsEmpty()); |
- v8::TryCatch try_catch(isolate); |
- result->Set(static_cast<uint32_t>(i), child_v8); |
- if (try_catch.HasCaught()) |
- LOG(ERROR) << "Setter for index " << i << " threw an exception."; |
+ v8::Maybe<bool> maybe = |
+ result->CreateDataProperty(context, static_cast<uint32_t>(i), child_v8); |
+ if (!maybe.IsJust() || !maybe.FromJust()) |
+ LOG(ERROR) << "Failed to set value at index " << i; |
} |
return result; |
@@ -253,6 +256,9 @@ v8::Local<v8::Value> V8ValueConverterImpl::ToV8Object( |
const base::DictionaryValue* val) const { |
v8::Local<v8::Object> result(v8::Object::New(isolate)); |
+ // TODO(robwu): Callers should pass in the context. |
+ v8::Local<v8::Context> context = isolate->GetCurrentContext(); |
+ |
for (base::DictionaryValue::Iterator iter(*val); |
!iter.IsAtEnd(); iter.Advance()) { |
const std::string& key = iter.key(); |
@@ -260,15 +266,13 @@ v8::Local<v8::Value> V8ValueConverterImpl::ToV8Object( |
ToV8ValueImpl(isolate, creation_context, &iter.value()); |
CHECK(!child_v8.IsEmpty()); |
- v8::TryCatch try_catch(isolate); |
- result->Set( |
- v8::String::NewFromUtf8( |
- isolate, key.c_str(), v8::String::kNormalString, key.length()), |
+ v8::Maybe<bool> maybe = result->CreateDataProperty( |
+ context, |
+ v8::String::NewFromUtf8(isolate, key.c_str(), v8::String::kNormalString, |
+ key.length()), |
child_v8); |
- if (try_catch.HasCaught()) { |
- LOG(ERROR) << "Setter for property " << key.c_str() << " threw an " |
- << "exception."; |
- } |
+ if (!maybe.IsJust() || !maybe.FromJust()) |
+ LOG(ERROR) << "Failed to set property with key " << key; |
} |
return result; |