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 "extensions/browser/event_router.h" | 5 #include "extensions/browser/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 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
161 FROM_HERE, | 161 FROM_HERE, |
162 base::Bind(&EventRouter::IncrementInFlightEventsOnUI, | 162 base::Bind(&EventRouter::IncrementInFlightEventsOnUI, |
163 browser_context_id, | 163 browser_context_id, |
164 extension_id)); | 164 extension_id)); |
165 } | 165 } |
166 | 166 |
167 EventRouter::EventRouter(BrowserContext* browser_context, | 167 EventRouter::EventRouter(BrowserContext* browser_context, |
168 ExtensionPrefs* extension_prefs) | 168 ExtensionPrefs* extension_prefs) |
169 : browser_context_(browser_context), | 169 : browser_context_(browser_context), |
170 extension_prefs_(extension_prefs), | 170 extension_prefs_(extension_prefs), |
171 extension_registry_observer_(this), | |
171 listeners_(this) { | 172 listeners_(this) { |
172 registrar_.Add(this, content::NOTIFICATION_RENDERER_PROCESS_TERMINATED, | 173 registrar_.Add(this, content::NOTIFICATION_RENDERER_PROCESS_TERMINATED, |
173 content::NotificationService::AllSources()); | 174 content::NotificationService::AllSources()); |
174 registrar_.Add(this, content::NOTIFICATION_RENDERER_PROCESS_CLOSED, | 175 registrar_.Add(this, content::NOTIFICATION_RENDERER_PROCESS_CLOSED, |
175 content::NotificationService::AllSources()); | 176 content::NotificationService::AllSources()); |
176 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_ENABLED, | 177 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_ENABLED, |
177 content::Source<BrowserContext>(browser_context_)); | 178 content::Source<BrowserContext>(browser_context_)); |
178 registrar_.Add(this, | 179 extension_registry_observer_.Add(ExtensionRegistry::Get(browser_context_)); |
179 chrome::NOTIFICATION_EXTENSION_LOADED_DEPRECATED, | |
180 content::Source<BrowserContext>(browser_context_)); | |
181 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED, | |
182 content::Source<BrowserContext>(browser_context_)); | |
183 } | 180 } |
184 | 181 |
185 EventRouter::~EventRouter() {} | 182 EventRouter::~EventRouter() {} |
186 | 183 |
187 void EventRouter::AddEventListener(const std::string& event_name, | 184 void EventRouter::AddEventListener(const std::string& event_name, |
188 content::RenderProcessHost* process, | 185 content::RenderProcessHost* process, |
189 const std::string& extension_id) { | 186 const std::string& extension_id) { |
190 listeners_.AddListener(scoped_ptr<EventListener>(new EventListener( | 187 listeners_.AddListener(scoped_ptr<EventListener>(new EventListener( |
191 event_name, extension_id, process, scoped_ptr<DictionaryValue>()))); | 188 event_name, extension_id, process, scoped_ptr<DictionaryValue>()))); |
192 } | 189 } |
(...skipping 492 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
685 const Extension* extension = | 682 const Extension* extension = |
686 content::Details<const Extension>(details).ptr(); | 683 content::Details<const Extension>(details).ptr(); |
687 if (BackgroundInfo::HasLazyBackgroundPage(extension)) { | 684 if (BackgroundInfo::HasLazyBackgroundPage(extension)) { |
688 LazyBackgroundTaskQueue* queue = ExtensionSystem::Get( | 685 LazyBackgroundTaskQueue* queue = ExtensionSystem::Get( |
689 browser_context_)->lazy_background_task_queue(); | 686 browser_context_)->lazy_background_task_queue(); |
690 queue->AddPendingTask(browser_context_, extension->id(), | 687 queue->AddPendingTask(browser_context_, extension->id(), |
691 base::Bind(&DoNothing)); | 688 base::Bind(&DoNothing)); |
692 } | 689 } |
693 break; | 690 break; |
694 } | 691 } |
695 case chrome::NOTIFICATION_EXTENSION_LOADED_DEPRECATED: { | |
696 // Add all registered lazy listeners to our cache. | |
697 const Extension* extension = | |
698 content::Details<const Extension>(details).ptr(); | |
699 std::set<std::string> registered_events = | |
700 GetRegisteredEvents(extension->id()); | |
701 listeners_.LoadUnfilteredLazyListeners(extension->id(), | |
702 registered_events); | |
703 const DictionaryValue* filtered_events = | |
704 GetFilteredEvents(extension->id()); | |
705 if (filtered_events) | |
706 listeners_.LoadFilteredLazyListeners(extension->id(), *filtered_events); | |
707 break; | |
708 } | |
709 case chrome::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED: { | |
710 // Remove all registered lazy listeners from our cache. | |
711 UnloadedExtensionInfo* unloaded = | |
712 content::Details<UnloadedExtensionInfo>(details).ptr(); | |
713 listeners_.RemoveLazyListenersForExtension(unloaded->extension->id()); | |
714 break; | |
715 } | |
716 default: | 692 default: |
717 NOTREACHED(); | 693 NOTREACHED(); |
718 return; | 694 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.
| |
719 } | 695 } |
720 } | 696 } |
721 | 697 |
698 void EventRouter::OnExtensionLoaded(content::BrowserContext* browser_context, | |
699 const Extension* extension) { | |
700 std::set<std::string> registered_events = | |
701 GetRegisteredEvents(extension->id()); | |
702 listeners_.LoadUnfilteredLazyListeners(extension->id(), registered_events); | |
703 const DictionaryValue* filtered_events = GetFilteredEvents(extension->id()); | |
704 if (filtered_events) | |
705 listeners_.LoadFilteredLazyListeners(extension->id(), *filtered_events); | |
706 } | |
707 | |
708 void EventRouter::OnExtensionUnloaded(content::BrowserContext* browser_context, | |
709 const Extension* extension, | |
710 UnloadedExtensionInfo::Reason reason) { | |
711 listeners_.RemoveLazyListenersForExtension(extension->id()); | |
712 } | |
713 | |
722 Event::Event(const std::string& event_name, | 714 Event::Event(const std::string& event_name, |
723 scoped_ptr<base::ListValue> event_args) | 715 scoped_ptr<base::ListValue> event_args) |
724 : event_name(event_name), | 716 : event_name(event_name), |
725 event_args(event_args.Pass()), | 717 event_args(event_args.Pass()), |
726 restrict_to_browser_context(NULL), | 718 restrict_to_browser_context(NULL), |
727 user_gesture(EventRouter::USER_GESTURE_UNKNOWN), | 719 user_gesture(EventRouter::USER_GESTURE_UNKNOWN), |
728 can_load_ephemeral_apps(false) { | 720 can_load_ephemeral_apps(false) { |
729 DCHECK(this->event_args.get()); | 721 DCHECK(this->event_args.get()); |
730 } | 722 } |
731 | 723 |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
770 } | 762 } |
771 | 763 |
772 EventListenerInfo::EventListenerInfo(const std::string& event_name, | 764 EventListenerInfo::EventListenerInfo(const std::string& event_name, |
773 const std::string& extension_id, | 765 const std::string& extension_id, |
774 content::BrowserContext* browser_context) | 766 content::BrowserContext* browser_context) |
775 : event_name(event_name), | 767 : event_name(event_name), |
776 extension_id(extension_id), | 768 extension_id(extension_id), |
777 browser_context(browser_context) {} | 769 browser_context(browser_context) {} |
778 | 770 |
779 } // namespace extensions | 771 } // namespace extensions |
OLD | NEW |