Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(515)

Side by Side Diff: extensions/browser/event_router.cc

Issue 346193002: Use ExtensionRegistry in EventRouter and ApiResourceManager (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698