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

Unified Diff: extensions/renderer/event_emitter.cc

Issue 2613093002: [Extension Bindings] Test event listeners throwing exceptions (Closed)
Patch Set: Remove listener Created 3 years, 11 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
Index: extensions/renderer/event_emitter.cc
diff --git a/extensions/renderer/event_emitter.cc b/extensions/renderer/event_emitter.cc
index afc358a6a6ce60a105910fbafe0fd7c3f34a8b31..a78923f8cc1aca1c0bdda4b03942cf4f08ec680b 100644
--- a/extensions/renderer/event_emitter.cc
+++ b/extensions/renderer/event_emitter.cc
@@ -41,8 +41,14 @@ void EventEmitter::Fire(v8::Local<v8::Context> context,
for (const auto& listener : listeners_)
listeners.push_back(listener.Get(context->GetIsolate()));
- for (const auto& listener : listeners)
+ for (const auto& listener : listeners) {
+ v8::TryCatch try_catch(context->GetIsolate());
+ // SetVerbose() means the error will still get logged, which is what we
+ // want. We don't let it bubble up any further to prevent it from being
+ // surfaced in e.g. JS code that triggered the event.
+ try_catch.SetVerbose(true);
run_js_.Run(listener, context, args->size(), args->data());
+ }
}
void EventEmitter::AddListener(gin::Arguments* arguments) {
« no previous file with comments | « extensions/renderer/api_event_handler_unittest.cc ('k') | extensions/renderer/native_extension_bindings_system_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698