Index: extensions/renderer/event_bindings.cc |
diff --git a/extensions/renderer/event_bindings.cc b/extensions/renderer/event_bindings.cc |
index e7876fa8bf40d9dcb5f92966362ba855a7ba5367..c941c8d4cdc0525f67bbb6d813c9e53fe28e3d49 100644 |
--- a/extensions/renderer/event_bindings.cc |
+++ b/extensions/renderer/event_bindings.cc |
@@ -21,6 +21,7 @@ |
#include "extensions/common/value_counter.h" |
#include "extensions/renderer/extension_helper.h" |
#include "extensions/renderer/script_context.h" |
+#include "extensions/renderer/v8_maybe_helpers.h" |
#include "url/gurl.h" |
namespace extensions { |
@@ -86,21 +87,23 @@ bool IsLazyBackgroundPage(content::RenderView* render_view, |
EventFilteringInfo ParseFromObject(v8::Local<v8::Object> object, |
v8::Isolate* isolate) { |
EventFilteringInfo info; |
- v8::Local<v8::String> url(v8::String::NewFromUtf8(isolate, "url")); |
- if (object->Has(url)) { |
- v8::Local<v8::Value> url_value(object->Get(url)); |
+ v8::Local<v8::String> url(ToV8String(isolate, "url")); |
+ v8::Local<v8::Context> context = isolate->GetCurrentContext(); |
+ if (CheckV8Call(object->Has(context, url))) { |
+ v8::Local<v8::Value> url_value(UnsafeGet(context, object, url)); |
info.SetURL(GURL(*v8::String::Utf8Value(url_value))); |
} |
- v8::Local<v8::String> instance_id( |
- v8::String::NewFromUtf8(isolate, "instanceId")); |
- if (object->Has(instance_id)) { |
- v8::Local<v8::Value> instance_id_value(object->Get(instance_id)); |
- info.SetInstanceID(instance_id_value->IntegerValue()); |
+ v8::Local<v8::String> instance_id(ToV8String(isolate, "instanceId")); |
+ if (CheckV8Call(object->Has(context, instance_id))) { |
+ v8::Local<v8::Value> instance_id_value( |
+ UnsafeGet(context, object, instance_id)); |
+ info.SetInstanceID( |
+ instance_id_value->IntegerValue(context).FromJust()); |
} |
- v8::Local<v8::String> service_type( |
- v8::String::NewFromUtf8(isolate, "serviceType")); |
- if (object->Has(service_type)) { |
- v8::Local<v8::Value> service_type_value(object->Get(service_type)); |
+ v8::Local<v8::String> service_type(ToV8String(isolate, "serviceType")); |
+ if (CheckV8Call(object->Has(context, service_type))) { |
+ v8::Local<v8::Value> service_type_value( |
+ UnsafeGet(context, object, service_type)); |
info.SetServiceType(*v8::String::Utf8Value(service_type_value)); |
} |
return info; |
@@ -201,7 +204,8 @@ void EventBindings::DetachEventHandler( |
CHECK_EQ(2, args.Length()); |
CHECK(args[0]->IsString()); |
CHECK(args[1]->IsBoolean()); |
- DetachEvent(*v8::String::Utf8Value(args[0]), args[1]->BooleanValue()); |
+ DetachEvent(*v8::String::Utf8Value(args[0]), |
+ args[1].As<v8::Boolean>()->Value()); |
} |
void EventBindings::DetachEvent(const std::string& event_name, bool is_manual) { |
@@ -281,11 +285,11 @@ void EventBindings::DetachFilteredEvent( |
CHECK_EQ(2, args.Length()); |
CHECK(args[0]->IsInt32()); |
CHECK(args[1]->IsBoolean()); |
- bool is_manual = args[1]->BooleanValue(); |
+ bool is_manual = args[1].As<v8::Boolean>()->Value(); |
std::string extension_id = context()->GetExtensionID(); |
- int matcher_id = args[0]->Int32Value(); |
+ int matcher_id = args[0].As<v8::Int32>()->Value(); |
EventFilter& event_filter = g_event_filter.Get(); |
EventMatcher* event_matcher = event_filter.GetEventMatcher(matcher_id); |
@@ -309,8 +313,9 @@ void EventBindings::MatchAgainstEventFilter( |
typedef std::set<EventFilter::MatcherID> MatcherIDs; |
EventFilter& event_filter = g_event_filter.Get(); |
std::string event_name = *v8::String::Utf8Value(args[0]); |
+ CHECK(args[1]->IsObject()); |
EventFilteringInfo info = |
- ParseFromObject(args[1]->ToObject(isolate), isolate); |
+ ParseFromObject(args[1].As<v8::Object>(), isolate); |
// Only match events routed to this context's RenderView or ones that don't |
// have a routingId in their filter. |
MatcherIDs matched_event_filters = event_filter.MatchEvent( |
@@ -321,7 +326,8 @@ void EventBindings::MatchAgainstEventFilter( |
for (MatcherIDs::iterator it = matched_event_filters.begin(); |
it != matched_event_filters.end(); |
++it) { |
- array->Set(v8::Integer::New(isolate, i++), v8::Integer::New(isolate, *it)); |
+ SetProperty(isolate->GetCurrentContext(), array, |
+ v8::Integer::New(isolate, i++), v8::Integer::New(isolate, *it)); |
} |
args.GetReturnValue().Set(array); |
} |