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

Unified Diff: extensions/browser/event_router.cc

Issue 823703004: Tracking push events for lucid sleep (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Version 2 with NotificationService Created 5 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/browser/event_router.cc
diff --git a/extensions/browser/event_router.cc b/extensions/browser/event_router.cc
index 41bccc57ec1b03164965969ba0e680a24933377c..81c98d099917b2e37d7494a1a292be1ce8fa5ad0 100644
--- a/extensions/browser/event_router.cc
+++ b/extensions/browser/event_router.cc
@@ -77,10 +77,25 @@ void NotifyApiEventDispatched(void* browser_context_id,
monitor->OnApiEventDispatched(extension_id, event_name, args.Pass());
}
+// A global identifier used to distinguish extension events and is
+// incremented every time an event is dispatched.
+int g_extension_message_id = 0;
+
} // namespace
const char EventRouter::kRegisteredEvents[] = "events";
+EventRouter::DispatchDetails::DispatchDetails(const std::string& extension_id,
+ const std::string& event_name,
+ int message_id)
+ : extension_id_(extension_id),
+ event_name_(event_name),
+ message_id_(message_id) {
+}
+
+EventRouter::DispatchDetails::~DispatchDetails() {
+}
+
struct EventRouter::ListenerProcess {
content::RenderProcessHost* process;
std::string extension_id;
@@ -111,10 +126,12 @@ void EventRouter::DispatchExtensionMessage(IPC::Sender* ipc_sender,
event_name,
make_scoped_ptr(event_args->DeepCopy()));
+ int message_id = g_extension_message_id++;
ListValue args;
args.Set(0, new base::StringValue(event_name));
args.Set(1, event_args);
args.Set(2, info.AsValue().release());
+ args.Set(3, new base::FundamentalValue(message_id));
ipc_sender->Send(new ExtensionMsg_MessageInvoke(
MSG_ROUTING_CONTROL,
extension_id,
@@ -123,6 +140,13 @@ void EventRouter::DispatchExtensionMessage(IPC::Sender* ipc_sender,
args,
user_gesture == USER_GESTURE_ENABLED));
+ DispatchDetails details(extension_id, event_name, message_id);
+ content::NotificationService::current()->Notify(
Ken Rockot(use gerrit already) 2015/01/08 01:24:02 This function runs on the IO thread, but Notificat
Ken Rockot(use gerrit already) 2015/01/08 01:25:58 I realize my pronoun may be ambiguous here. What I
+ NOTIFICATION_EXTENSION_MESSAGE_DISPATCHED,
+ content::Source<content::BrowserContext>(
+ static_cast<content::BrowserContext*>(browser_context_id)),
+ content::Details<EventRouter::DispatchDetails>(&details));
+
// DispatchExtensionMessage does _not_ take ownership of event_args, so we
// must ensure that the destruction of args does not attempt to free it.
scoped_ptr<base::Value> removed_event_args;

Powered by Google App Engine
This is Rietveld 408576698