| Index: content/browser/android/java/gin_java_method_invocation_helper.cc
|
| diff --git a/content/browser/android/java/gin_java_method_invocation_helper.cc b/content/browser/android/java/gin_java_method_invocation_helper.cc
|
| index 78100575452faed38fececdd89e9c4fab2ce46a8..9c9cc09bdeb6a8dbbc757927f0ca0ae46b5afeb1 100644
|
| --- a/content/browser/android/java/gin_java_method_invocation_helper.cc
|
| +++ b/content/browser/android/java/gin_java_method_invocation_helper.cc
|
| @@ -44,56 +44,54 @@ void GinJavaMethodInvocationHelper::Init(DispatcherDelegate* dispatcher) {
|
| // Build on the UI thread a map of object_id -> WeakRef for Java objects from
|
| // |arguments_|. Then we can use this map on the background thread without
|
| // accessing |dispatcher|.
|
| - BuildObjectRefsFromListValue(dispatcher, arguments_.get());
|
| + BuildObjectRefsFromListValue(dispatcher, *arguments_);
|
| }
|
|
|
| // As V8ValueConverter has finite recursion depth when serializing
|
| // JavaScript values, we don't bother about having a recursion threshold here.
|
| void GinJavaMethodInvocationHelper::BuildObjectRefsFromListValue(
|
| DispatcherDelegate* dispatcher,
|
| - const base::Value* list_value) {
|
| - DCHECK(list_value->IsType(base::Value::TYPE_LIST));
|
| + const base::Value& list_value) {
|
| + DCHECK(list_value.IsType(base::Value::TYPE_LIST));
|
| const base::ListValue* list;
|
| - list_value->GetAsList(&list);
|
| - for (base::ListValue::const_iterator iter = list->begin();
|
| - iter != list->end();
|
| - ++iter) {
|
| - if (AppendObjectRef(dispatcher, *iter))
|
| + list_value.GetAsList(&list);
|
| + for (const auto& entry : *list) {
|
| + if (AppendObjectRef(dispatcher, *entry))
|
| continue;
|
| - if ((*iter)->IsType(base::Value::TYPE_LIST)) {
|
| - BuildObjectRefsFromListValue(dispatcher, *iter);
|
| - } else if ((*iter)->IsType(base::Value::TYPE_DICTIONARY)) {
|
| - BuildObjectRefsFromDictionaryValue(dispatcher, *iter);
|
| + if (entry->IsType(base::Value::TYPE_LIST)) {
|
| + BuildObjectRefsFromListValue(dispatcher, *entry);
|
| + } else if (entry->IsType(base::Value::TYPE_DICTIONARY)) {
|
| + BuildObjectRefsFromDictionaryValue(dispatcher, *entry);
|
| }
|
| }
|
| }
|
|
|
| void GinJavaMethodInvocationHelper::BuildObjectRefsFromDictionaryValue(
|
| DispatcherDelegate* dispatcher,
|
| - const base::Value* dict_value) {
|
| - DCHECK(dict_value->IsType(base::Value::TYPE_DICTIONARY));
|
| + const base::Value& dict_value) {
|
| + DCHECK(dict_value.IsType(base::Value::TYPE_DICTIONARY));
|
| const base::DictionaryValue* dict;
|
| - dict_value->GetAsDictionary(&dict);
|
| + dict_value.GetAsDictionary(&dict);
|
| for (base::DictionaryValue::Iterator iter(*dict);
|
| !iter.IsAtEnd();
|
| iter.Advance()) {
|
| - if (AppendObjectRef(dispatcher, &iter.value()))
|
| + if (AppendObjectRef(dispatcher, iter.value()))
|
| continue;
|
| if (iter.value().IsType(base::Value::TYPE_LIST)) {
|
| - BuildObjectRefsFromListValue(dispatcher, &iter.value());
|
| + BuildObjectRefsFromListValue(dispatcher, iter.value());
|
| } else if (iter.value().IsType(base::Value::TYPE_DICTIONARY)) {
|
| - BuildObjectRefsFromDictionaryValue(dispatcher, &iter.value());
|
| + BuildObjectRefsFromDictionaryValue(dispatcher, iter.value());
|
| }
|
| }
|
| }
|
|
|
| bool GinJavaMethodInvocationHelper::AppendObjectRef(
|
| DispatcherDelegate* dispatcher,
|
| - const base::Value* raw_value) {
|
| - if (!GinJavaBridgeValue::ContainsGinJavaBridgeValue(raw_value))
|
| + const base::Value& raw_value) {
|
| + if (!GinJavaBridgeValue::ContainsGinJavaBridgeValue(&raw_value))
|
| return false;
|
| std::unique_ptr<const GinJavaBridgeValue> value(
|
| - GinJavaBridgeValue::FromValue(raw_value));
|
| + GinJavaBridgeValue::FromValue(&raw_value));
|
| if (!value->IsType(GinJavaBridgeValue::TYPE_OBJECT_ID))
|
| return false;
|
| GinJavaBoundObject::ObjectID object_id;
|
|
|