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

Unified Diff: extensions/renderer/api_event_handler.cc

Issue 2909673003: [Extensions Bindings] Request JS execution from messaging bindings (Closed)
Patch Set: . Created 3 years, 7 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/api_event_handler.cc
diff --git a/extensions/renderer/api_event_handler.cc b/extensions/renderer/api_event_handler.cc
index fc8c3a1a25119d12c11094715aa147751bf4df16..531d68e7fcb17c57c940cde4c2eda10580339f12 100644
--- a/extensions/renderer/api_event_handler.cc
+++ b/extensions/renderer/api_event_handler.cc
@@ -255,6 +255,22 @@ void APIEventHandler::RegisterArgumentMassager(
data->massagers[event_name].Reset(context->GetIsolate(), massager);
}
+bool APIEventHandler::HasListenerForEvent(const std::string& event_name,
+ v8::Local<v8::Context> context) {
+ APIEventPerContextData* data = GetContextData(context, false);
+ if (!data)
+ return false;
+
+ auto iter = data->emitters.find(event_name);
+ if (iter == data->emitters.end())
+ return false;
+ EventEmitter* emitter = nullptr;
+ gin::Converter<EventEmitter*>::FromV8(
+ context->GetIsolate(), iter->second.Get(context->GetIsolate()), &emitter);
+ CHECK(emitter);
+ return emitter->GetNumListeners() > 0;
lazyboy 2017/06/05 18:18:32 Given that we only care about EventEmitter::HasLis
Devlin 2017/06/09 20:18:01 Good thought. Since this patch is already a bit l
lazyboy 2017/06/10 00:09:05 Acknowledged.
+}
+
void APIEventHandler::InvalidateContext(v8::Local<v8::Context> context) {
gin::PerContextData* per_context_data = gin::PerContextData::From(context);
DCHECK(per_context_data);

Powered by Google App Engine
This is Rietveld 408576698