| Index: extensions/browser/event_router.h
|
| diff --git a/extensions/browser/event_router.h b/extensions/browser/event_router.h
|
| index 767dcbcb2e79b52c8012bc4619227f772143e1e8..e7b649905fb8930a321a47dfbc6b1e6f426feae8 100644
|
| --- a/extensions/browser/event_router.h
|
| +++ b/extensions/browser/event_router.h
|
| @@ -26,6 +26,7 @@
|
| #include "extensions/browser/extension_registry_observer.h"
|
| #include "extensions/common/event_filtering_info.h"
|
| #include "ipc/ipc_sender.h"
|
| +#include "url/gurl.h"
|
|
|
| class GURL;
|
| class PrefService;
|
| @@ -85,13 +86,17 @@ class EventRouter : public KeyedService,
|
|
|
| // Sends an event via ipc_sender to the given extension. Can be called on any
|
| // thread.
|
| - static void DispatchEvent(IPC::Sender* ipc_sender,
|
| - void* browser_context_id,
|
| - const std::string& extension_id,
|
| - const std::string& event_name,
|
| - scoped_ptr<base::ListValue> event_args,
|
| - UserGestureState user_gesture,
|
| - const EventFilteringInfo& info);
|
| + //
|
| + // It is very rare to call this function directly. Instead use the instance
|
| + // methods BroadcastEvent or DispatchEventToExtension.
|
| + static void DispatchEventToSender(IPC::Sender* ipc_sender,
|
| + void* browser_context_id,
|
| + const std::string& extension_id,
|
| + events::HistogramValue histogram_value,
|
| + const std::string& event_name,
|
| + scoped_ptr<base::ListValue> event_args,
|
| + UserGestureState user_gesture,
|
| + const EventFilteringInfo& info);
|
|
|
| // An EventRouter is shared between |browser_context| and its associated
|
| // incognito context. |extension_prefs| may be NULL in tests.
|
| @@ -185,6 +190,15 @@ class EventRouter : public KeyedService,
|
| void OnEventAck(content::BrowserContext* context,
|
| const std::string& extension_id);
|
|
|
| + // Reports UMA for an event dispatched to |extension| with histogram value
|
| + // |histogram_value|. Must be called on the UI thread.
|
| + //
|
| + // |did_enqueue| should be true if the event was queued waiting for a process
|
| + // to start, like an event page.
|
| + void ReportEvent(events::HistogramValue histogram_value,
|
| + const Extension* extension,
|
| + bool did_enqueue);
|
| +
|
| private:
|
| friend class EventRouterTest;
|
|
|
| @@ -229,9 +243,9 @@ class EventRouter : public KeyedService,
|
| const std::string& extension_id,
|
| const std::string& event_name);
|
|
|
| - // Shared by DispatchEvent*. If |restrict_to_extension_id| is empty, the
|
| - // event is broadcast.
|
| - // An event that just came off the pending list may not be delayed again.
|
| + // Shared by all event dispatch methods. If |restrict_to_extension_id| is
|
| + // empty, the event is broadcast. An event that just came off the pending
|
| + // list may not be delayed again.
|
| void DispatchEventImpl(const std::string& restrict_to_extension_id,
|
| const linked_ptr<Event>& event);
|
|
|
| @@ -250,7 +264,8 @@ class EventRouter : public KeyedService,
|
| const GURL& listener_url,
|
| content::RenderProcessHost* process,
|
| const linked_ptr<Event>& event,
|
| - const base::DictionaryValue* listener_filter);
|
| + const base::DictionaryValue* listener_filter,
|
| + bool did_enqueue);
|
|
|
| // Returns false when the event is scoped to a context and the listening
|
| // extension does not have access to events from that context. Also fills
|
| @@ -292,10 +307,12 @@ class EventRouter : public KeyedService,
|
| const std::string& event_name);
|
|
|
| // static
|
| - static void IncrementInFlightEventsOnUI(void* browser_context_id,
|
| - const std::string& extension_id,
|
| - int event_id,
|
| - const std::string& event_name);
|
| + static void DoDispatchEventToSenderBookkeepingOnUI(
|
| + void* browser_context_id,
|
| + const std::string& extension_id,
|
| + int event_id,
|
| + events::HistogramValue histogram_value,
|
| + const std::string& event_name);
|
|
|
| void DispatchPendingEvent(const linked_ptr<Event>& event,
|
| ExtensionHost* host);
|
|
|