Index: extensions/browser/event_router.h |
diff --git a/extensions/browser/event_router.h b/extensions/browser/event_router.h |
index 48bc266980cce4ce121f64a3402d8afbc5926e8a..83bc635e38ba4cacfbb1814b8339ce90a1f11ccf 100644 |
--- a/extensions/browser/event_router.h |
+++ b/extensions/browser/event_router.h |
@@ -7,11 +7,11 @@ |
#include <set> |
#include <string> |
+#include <unordered_map> |
#include <utility> |
#include "base/callback.h" |
#include "base/compiler_specific.h" |
-#include "base/containers/hash_tables.h" |
#include "base/macros.h" |
#include "base/memory/linked_ptr.h" |
#include "base/memory/ref_counted.h" |
@@ -72,6 +72,9 @@ class EventRouter : public KeyedService, |
virtual void OnListenerAdded(const EventListenerInfo& details) {} |
// Called when a listener is removed. |
virtual void OnListenerRemoved(const EventListenerInfo& details) {} |
+ |
+ protected: |
+ virtual ~Observer() {} |
}; |
// Gets the EventRouter for |browser_context|. |
@@ -126,8 +129,7 @@ class EventRouter : public KeyedService, |
// Registers an observer to be notified when an event listener for |
// |event_name| is added or removed. There can currently be only one observer |
// for each distinct |event_name|. |
- void RegisterObserver(Observer* observer, |
- const std::string& event_name); |
+ void RegisterObserver(Observer* observer, const std::string& event_name); |
// Unregisters an observer from all events. |
void UnregisterObserver(Observer* observer); |
@@ -157,11 +159,12 @@ class EventRouter : public KeyedService, |
bool remove_lazy_listener); |
// Returns true if there is at least one listener for the given event. |
- bool HasEventListener(const std::string& event_name); |
+ bool HasEventListener(const std::string& event_name) const; |
// Returns true if the extension is listening to the given event. |
+ // (virtual for testing only.) |
virtual bool ExtensionHasEventListener(const std::string& extension_id, |
- const std::string& event_name); |
+ const std::string& event_name) const; |
// Broadcasts an event to every listener registered for that event. |
virtual void BroadcastEvent(std::unique_ptr<Event> event); |
@@ -321,11 +324,11 @@ class EventRouter : public KeyedService, |
int exit_code) override; |
void RenderProcessHostDestroyed(content::RenderProcessHost* host) override; |
- content::BrowserContext* browser_context_; |
+ content::BrowserContext* const browser_context_; |
// The ExtensionPrefs associated with |browser_context_|. May be NULL in |
// tests. |
- ExtensionPrefs* extension_prefs_; |
+ ExtensionPrefs* const extension_prefs_; |
content::NotificationRegistrar registrar_; |
@@ -335,7 +338,7 @@ class EventRouter : public KeyedService, |
EventListenerMap listeners_; |
// Map from base event name to observer. |
- typedef base::hash_map<std::string, Observer*> ObserverMap; |
+ using ObserverMap = std::unordered_map<std::string, Observer*>; |
ObserverMap observers_; |
std::set<content::RenderProcessHost*> observed_process_set_; |
@@ -346,19 +349,19 @@ class EventRouter : public KeyedService, |
struct Event { |
// This callback should return true if the event should be dispatched to the |
// given context and extension, and false otherwise. |
- typedef base::Callback<bool(content::BrowserContext*, |
- const Extension*, |
- Event*, |
- const base::DictionaryValue*)> |
- WillDispatchCallback; |
+ using WillDispatchCallback = |
+ base::Callback<bool(content::BrowserContext*, |
+ const Extension*, |
+ Event*, |
+ const base::DictionaryValue*)>; |
// The identifier for the event, for histograms. In most cases this |
// correlates 1:1 with |event_name|, in some cases events will generate |
// their own names, but they cannot generate their own identifier. |
- events::HistogramValue histogram_value; |
+ const events::HistogramValue histogram_value; |
// The event to dispatch. |
- std::string event_name; |
+ const std::string event_name; |
// Arguments to send to the event listener. |
std::unique_ptr<base::ListValue> event_args; |
@@ -423,7 +426,7 @@ struct EventListenerInfo { |
const std::string extension_id; |
const GURL listener_url; |
- content::BrowserContext* browser_context; |
+ content::BrowserContext* const browser_context; |
}; |
} // namespace extensions |