Chromium Code Reviews| Index: extensions/browser/event_router.cc |
| diff --git a/extensions/browser/event_router.cc b/extensions/browser/event_router.cc |
| index 3c6679fb997e45e2f4412eea8d9b84d8dcf3c63c..2ba8df33cc34e753947c42a7cf75a77da5be8e3f 100644 |
| --- a/extensions/browser/event_router.cc |
| +++ b/extensions/browser/event_router.cc |
| @@ -168,6 +168,7 @@ EventRouter::EventRouter(BrowserContext* browser_context, |
| ExtensionPrefs* extension_prefs) |
| : browser_context_(browser_context), |
| extension_prefs_(extension_prefs), |
| + extension_registry_observer_(this), |
| listeners_(this) { |
| registrar_.Add(this, content::NOTIFICATION_RENDERER_PROCESS_TERMINATED, |
| content::NotificationService::AllSources()); |
| @@ -175,11 +176,7 @@ EventRouter::EventRouter(BrowserContext* browser_context, |
| content::NotificationService::AllSources()); |
| registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_ENABLED, |
| content::Source<BrowserContext>(browser_context_)); |
| - registrar_.Add(this, |
| - chrome::NOTIFICATION_EXTENSION_LOADED_DEPRECATED, |
| - content::Source<BrowserContext>(browser_context_)); |
| - registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED, |
| - content::Source<BrowserContext>(browser_context_)); |
| + extension_registry_observer_.Add(ExtensionRegistry::Get(browser_context_)); |
| } |
| EventRouter::~EventRouter() {} |
| @@ -692,33 +689,28 @@ void EventRouter::Observe(int type, |
| } |
| break; |
| } |
| - case chrome::NOTIFICATION_EXTENSION_LOADED_DEPRECATED: { |
| - // Add all registered lazy listeners to our cache. |
| - const Extension* extension = |
| - content::Details<const Extension>(details).ptr(); |
| - std::set<std::string> registered_events = |
| - GetRegisteredEvents(extension->id()); |
| - listeners_.LoadUnfilteredLazyListeners(extension->id(), |
| - registered_events); |
| - const DictionaryValue* filtered_events = |
| - GetFilteredEvents(extension->id()); |
| - if (filtered_events) |
| - listeners_.LoadFilteredLazyListeners(extension->id(), *filtered_events); |
| - break; |
| - } |
| - case chrome::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED: { |
| - // Remove all registered lazy listeners from our cache. |
| - UnloadedExtensionInfo* unloaded = |
| - content::Details<UnloadedExtensionInfo>(details).ptr(); |
| - listeners_.RemoveLazyListenersForExtension(unloaded->extension->id()); |
| - break; |
| - } |
| default: |
| NOTREACHED(); |
| return; |
|
Devlin
2014/06/25 19:59:54
nit: Can you take out this return while you're her
limasdf
2014/07/20 06:35:50
Done.
|
| } |
| } |
| +void EventRouter::OnExtensionLoaded(content::BrowserContext* browser_context, |
| + const Extension* extension) { |
| + std::set<std::string> registered_events = |
| + GetRegisteredEvents(extension->id()); |
| + listeners_.LoadUnfilteredLazyListeners(extension->id(), registered_events); |
| + const DictionaryValue* filtered_events = GetFilteredEvents(extension->id()); |
| + if (filtered_events) |
| + listeners_.LoadFilteredLazyListeners(extension->id(), *filtered_events); |
| +} |
| + |
| +void EventRouter::OnExtensionUnloaded(content::BrowserContext* browser_context, |
| + const Extension* extension, |
| + UnloadedExtensionInfo::Reason reason) { |
| + listeners_.RemoveLazyListenersForExtension(extension->id()); |
| +} |
| + |
| Event::Event(const std::string& event_name, |
| scoped_ptr<base::ListValue> event_args) |
| : event_name(event_name), |