Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1218)

Unified Diff: extensions/renderer/event_bindings.cc

Issue 1167423002: Use V8 Maybe APIs in extensions/renderer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « extensions/renderer/dispatcher.cc ('k') | extensions/renderer/file_system_natives.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
}
« no previous file with comments | « extensions/renderer/dispatcher.cc ('k') | extensions/renderer/file_system_natives.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698