| OLD | NEW | 
|    1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |    1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 
|    2 // Use of this source code is governed by a BSD-style license that can be |    2 // Use of this source code is governed by a BSD-style license that can be | 
|    3 // found in the LICENSE file. |    3 // found in the LICENSE file. | 
|    4  |    4  | 
|    5 #include "chrome/browser/extensions/event_router.h" |    5 #include "chrome/browser/extensions/event_router.h" | 
|    6  |    6  | 
|    7 #include <utility> |    7 #include <utility> | 
|    8  |    8  | 
|    9 #include "base/bind.h" |    9 #include "base/bind.h" | 
|   10 #include "base/command_line.h" |   10 #include "base/command_line.h" | 
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   58     const std::string& extension_id, |   58     const std::string& extension_id, | 
|   59     const Version& old_version, |   59     const Version& old_version, | 
|   60     bool chrome_updated) { |   60     bool chrome_updated) { | 
|   61   if (!g_browser_process->profile_manager()->IsValidProfile(profile)) |   61   if (!g_browser_process->profile_manager()->IsValidProfile(profile)) | 
|   62     return; |   62     return; | 
|   63  |   63  | 
|   64   RuntimeEventRouter::DispatchOnInstalledEvent(profile, extension_id, |   64   RuntimeEventRouter::DispatchOnInstalledEvent(profile, extension_id, | 
|   65                                                old_version, chrome_updated); |   65                                                old_version, chrome_updated); | 
|   66 } |   66 } | 
|   67  |   67  | 
 |   68 void DoNothing(extensions::ExtensionHost* host) {} | 
 |   69  | 
|   68 }  // namespace |   70 }  // namespace | 
|   69  |   71  | 
|   70 struct EventRouter::ListenerProcess { |   72 struct EventRouter::ListenerProcess { | 
|   71   content::RenderProcessHost* process; |   73   content::RenderProcessHost* process; | 
|   72   std::string extension_id; |   74   std::string extension_id; | 
|   73  |   75  | 
|   74   ListenerProcess(content::RenderProcessHost* process, |   76   ListenerProcess(content::RenderProcessHost* process, | 
|   75                   const std::string& extension_id) |   77                   const std::string& extension_id) | 
|   76       : process(process), extension_id(extension_id) {} |   78       : process(process), extension_id(extension_id) {} | 
|   77  |   79  | 
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  121 EventRouter::EventRouter(Profile* profile, ExtensionPrefs* extension_prefs) |  123 EventRouter::EventRouter(Profile* profile, ExtensionPrefs* extension_prefs) | 
|  122     : profile_(profile), |  124     : profile_(profile), | 
|  123       listeners_(ALLOW_THIS_IN_INITIALIZER_LIST(this)), |  125       listeners_(ALLOW_THIS_IN_INITIALIZER_LIST(this)), | 
|  124       dispatch_chrome_updated_event_(false) { |  126       dispatch_chrome_updated_event_(false) { | 
|  125   registrar_.Add(this, content::NOTIFICATION_RENDERER_PROCESS_TERMINATED, |  127   registrar_.Add(this, content::NOTIFICATION_RENDERER_PROCESS_TERMINATED, | 
|  126                  content::NotificationService::AllSources()); |  128                  content::NotificationService::AllSources()); | 
|  127   registrar_.Add(this, content::NOTIFICATION_RENDERER_PROCESS_CLOSED, |  129   registrar_.Add(this, content::NOTIFICATION_RENDERER_PROCESS_CLOSED, | 
|  128                  content::NotificationService::AllSources()); |  130                  content::NotificationService::AllSources()); | 
|  129   registrar_.Add(this, chrome::NOTIFICATION_EXTENSIONS_READY, |  131   registrar_.Add(this, chrome::NOTIFICATION_EXTENSIONS_READY, | 
|  130                  content::Source<Profile>(profile_)); |  132                  content::Source<Profile>(profile_)); | 
 |  133   registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_ENABLED, | 
 |  134                  content::Source<Profile>(profile_)); | 
|  131   registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_LOADED, |  135   registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_LOADED, | 
|  132                  content::Source<Profile>(profile_)); |  136                  content::Source<Profile>(profile_)); | 
|  133   registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UNLOADED, |  137   registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UNLOADED, | 
|  134                  content::Source<Profile>(profile_)); |  138                  content::Source<Profile>(profile_)); | 
|  135   registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_INSTALLED, |  139   registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_INSTALLED, | 
|  136                  content::Source<Profile>(profile_)); |  140                  content::Source<Profile>(profile_)); | 
|  137  |  141  | 
|  138   // NULL in unit_tests. |  142   // NULL in unit_tests. | 
|  139   if (extension_prefs) { |  143   if (extension_prefs) { | 
|  140     // Check if registered events are up-to-date. We need to do this before |  144     // Check if registered events are up-to-date. We need to do this before | 
| (...skipping 458 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  599           content::Source<content::RenderProcessHost>(source).ptr(); |  603           content::Source<content::RenderProcessHost>(source).ptr(); | 
|  600       // Remove all event listeners associated with this renderer. |  604       // Remove all event listeners associated with this renderer. | 
|  601       listeners_.RemoveListenersForProcess(renderer); |  605       listeners_.RemoveListenersForProcess(renderer); | 
|  602       break; |  606       break; | 
|  603     } |  607     } | 
|  604     case chrome::NOTIFICATION_EXTENSIONS_READY: { |  608     case chrome::NOTIFICATION_EXTENSIONS_READY: { | 
|  605       // We're done restarting Chrome after an update. |  609       // We're done restarting Chrome after an update. | 
|  606       dispatch_chrome_updated_event_ = false; |  610       dispatch_chrome_updated_event_ = false; | 
|  607       break; |  611       break; | 
|  608     } |  612     } | 
 |  613     case chrome::NOTIFICATION_EXTENSION_ENABLED: { | 
 |  614       // If the extension has a lazy background page, make sure it gets loaded | 
 |  615       // to register the events the extension is interested in. | 
 |  616       const Extension* extension = | 
 |  617           content::Details<const Extension>(details).ptr(); | 
 |  618       if (extension->has_lazy_background_page()) { | 
 |  619         LazyBackgroundTaskQueue* queue = | 
 |  620             ExtensionSystem::Get(profile_)->lazy_background_task_queue(); | 
 |  621         queue->AddPendingTask(profile_, extension->id(), | 
 |  622                               base::Bind(&DoNothing)); | 
 |  623       } | 
 |  624     } | 
|  609     case chrome::NOTIFICATION_EXTENSION_LOADED: { |  625     case chrome::NOTIFICATION_EXTENSION_LOADED: { | 
|  610       // Add all registered lazy listeners to our cache. |  626       // Add all registered lazy listeners to our cache. | 
|  611       const Extension* extension = |  627       const Extension* extension = | 
|  612           content::Details<const Extension>(details).ptr(); |  628           content::Details<const Extension>(details).ptr(); | 
|  613       ExtensionPrefs* prefs = |  629       ExtensionPrefs* prefs = | 
|  614           profile_->GetExtensionService()->extension_prefs(); |  630           profile_->GetExtensionService()->extension_prefs(); | 
|  615       std::set<std::string> registered_events = |  631       std::set<std::string> registered_events = | 
|  616           prefs->GetRegisteredEvents(extension->id()); |  632           prefs->GetRegisteredEvents(extension->id()); | 
|  617       listeners_.LoadUnfilteredLazyListeners(extension->id(), |  633       listeners_.LoadUnfilteredLazyListeners(extension->id(), | 
|  618                                              registered_events); |  634                                              registered_events); | 
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  689       info(info) {} |  705       info(info) {} | 
|  690  |  706  | 
|  691 Event::~Event() {} |  707 Event::~Event() {} | 
|  692  |  708  | 
|  693 EventListenerInfo::EventListenerInfo(const std::string& event_name, |  709 EventListenerInfo::EventListenerInfo(const std::string& event_name, | 
|  694                                      const std::string& extension_id) |  710                                      const std::string& extension_id) | 
|  695     : event_name(event_name), |  711     : event_name(event_name), | 
|  696       extension_id(extension_id) {} |  712       extension_id(extension_id) {} | 
|  697  |  713  | 
|  698 }  // namespace extensions |  714 }  // namespace extensions | 
| OLD | NEW |