From 259c0a3f44bdd8130c5d835e9f596624a079fbd1 Mon Sep 17 00:00:00 2001 From: reillyg Date: Thu, 10 Sep 2015 17:25:54 -0700 Subject: Add scoped_ptr-safe base::Value to Dictionary/List conversion functions. This change adds two static From() functions to the DictionaryValue and ListValue classes which take a scoped_ptr to a Value and either convert it to a scoped_ptr to a DictionaryValue or ListValue, or return nullptr. These are intended to replace the existing pattern, make_scoped_ptr(static_cast(value.release())) with the shorter and safer alternative, base::DictionaryValue::From(value.Pass()) Instances of this pattern in //extensions have been converted as examples. Review URL: https://codereview.chromium.org/1308013005 Cr-Commit-Position: refs/heads/master@{#348294} --- extensions/renderer/event_bindings.cc | 2 +- .../renderer/guest_view/guest_view_internal_custom_bindings.cc | 10 ++++------ 2 files changed, 5 insertions(+), 7 deletions(-) (limited to 'extensions/renderer') diff --git a/extensions/renderer/event_bindings.cc b/extensions/renderer/event_bindings.cc index 229a1c8..82e63471 100644 --- a/extensions/renderer/event_bindings.cc +++ b/extensions/renderer/event_bindings.cc @@ -265,7 +265,7 @@ void EventBindings::AttachFilteredEvent( args.GetReturnValue().Set(static_cast(-1)); return; } - filter.reset(static_cast(filter_value.release())); + filter = base::DictionaryValue::From(filter_value.Pass()); } // Hold onto a weak reference to |filter| so that it can be used after passing diff --git a/extensions/renderer/guest_view/guest_view_internal_custom_bindings.cc b/extensions/renderer/guest_view/guest_view_internal_custom_bindings.cc index 3b5ce79..7eb1292 100644 --- a/extensions/renderer/guest_view/guest_view_internal_custom_bindings.cc +++ b/extensions/renderer/guest_view/guest_view_internal_custom_bindings.cc @@ -151,9 +151,8 @@ void GuestViewInternalCustomBindings::AttachGuest( scoped_ptr converter(V8ValueConverter::create()); scoped_ptr params_as_value( converter->FromV8Value(args[2], context()->v8_context())); - CHECK(params_as_value->IsType(base::Value::TYPE_DICTIONARY)); - params.reset( - static_cast(params_as_value.release())); + params = base::DictionaryValue::From(params_as_value.Pass()); + CHECK(params); } // Add flag to |params| to indicate that the element size is specified in @@ -226,9 +225,8 @@ void GuestViewInternalCustomBindings::AttachIframeGuest( scoped_ptr converter(V8ValueConverter::create()); scoped_ptr params_as_value( converter->FromV8Value(args[2], context()->v8_context())); - CHECK(params_as_value->IsType(base::Value::TYPE_DICTIONARY)); - params.reset( - static_cast(params_as_value.release())); + params = base::DictionaryValue::From(params_as_value.Pass()); + CHECK(params); } // Add flag to |params| to indicate that the element size is specified in -- cgit v1.1