| 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);
|
| }
|
|
|