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

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

Issue 430243002: Use ExtensionRegistry in EventRouter (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 4 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
« no previous file with comments | « extensions/browser/event_router.h ('k') | extensions/browser/event_router_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 FROM_HERE, 162 FROM_HERE,
163 base::Bind(&EventRouter::IncrementInFlightEventsOnUI, 163 base::Bind(&EventRouter::IncrementInFlightEventsOnUI,
164 browser_context_id, 164 browser_context_id,
165 extension_id)); 165 extension_id));
166 } 166 }
167 167
168 EventRouter::EventRouter(BrowserContext* browser_context, 168 EventRouter::EventRouter(BrowserContext* browser_context,
169 ExtensionPrefs* extension_prefs) 169 ExtensionPrefs* extension_prefs)
170 : browser_context_(browser_context), 170 : browser_context_(browser_context),
171 extension_prefs_(extension_prefs), 171 extension_prefs_(extension_prefs),
172 extension_registry_observer_(this),
172 listeners_(this) { 173 listeners_(this) {
173 registrar_.Add(this, content::NOTIFICATION_RENDERER_PROCESS_TERMINATED, 174 registrar_.Add(this, content::NOTIFICATION_RENDERER_PROCESS_TERMINATED,
174 content::NotificationService::AllSources()); 175 content::NotificationService::AllSources());
175 registrar_.Add(this, content::NOTIFICATION_RENDERER_PROCESS_CLOSED, 176 registrar_.Add(this, content::NOTIFICATION_RENDERER_PROCESS_CLOSED,
176 content::NotificationService::AllSources()); 177 content::NotificationService::AllSources());
177 registrar_.Add(this, 178 registrar_.Add(this,
178 extensions::NOTIFICATION_EXTENSION_ENABLED, 179 extensions::NOTIFICATION_EXTENSION_ENABLED,
179 content::Source<BrowserContext>(browser_context_)); 180 content::Source<BrowserContext>(browser_context_));
180 registrar_.Add(this, 181 extension_registry_observer_.Add(ExtensionRegistry::Get(browser_context_));
181 extensions::NOTIFICATION_EXTENSION_LOADED_DEPRECATED,
182 content::Source<BrowserContext>(browser_context_));
183 registrar_.Add(this,
184 extensions::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED,
185 content::Source<BrowserContext>(browser_context_));
186 } 182 }
187 183
188 EventRouter::~EventRouter() {} 184 EventRouter::~EventRouter() {}
189 185
190 void EventRouter::AddEventListener(const std::string& event_name, 186 void EventRouter::AddEventListener(const std::string& event_name,
191 content::RenderProcessHost* process, 187 content::RenderProcessHost* process,
192 const std::string& extension_id) { 188 const std::string& extension_id) {
193 listeners_.AddListener(EventListener::ForExtension( 189 listeners_.AddListener(EventListener::ForExtension(
194 event_name, extension_id, process, scoped_ptr<DictionaryValue>())); 190 event_name, extension_id, process, scoped_ptr<DictionaryValue>()));
195 } 191 }
(...skipping 547 matching lines...) Expand 10 before | Expand all | Expand 10 after
743 const Extension* extension = 739 const Extension* extension =
744 content::Details<const Extension>(details).ptr(); 740 content::Details<const Extension>(details).ptr();
745 if (BackgroundInfo::HasLazyBackgroundPage(extension)) { 741 if (BackgroundInfo::HasLazyBackgroundPage(extension)) {
746 LazyBackgroundTaskQueue* queue = ExtensionSystem::Get( 742 LazyBackgroundTaskQueue* queue = ExtensionSystem::Get(
747 browser_context_)->lazy_background_task_queue(); 743 browser_context_)->lazy_background_task_queue();
748 queue->AddPendingTask(browser_context_, extension->id(), 744 queue->AddPendingTask(browser_context_, extension->id(),
749 base::Bind(&DoNothing)); 745 base::Bind(&DoNothing));
750 } 746 }
751 break; 747 break;
752 } 748 }
753 case extensions::NOTIFICATION_EXTENSION_LOADED_DEPRECATED: {
754 // Add all registered lazy listeners to our cache.
755 const Extension* extension =
756 content::Details<const Extension>(details).ptr();
757 std::set<std::string> registered_events =
758 GetRegisteredEvents(extension->id());
759 listeners_.LoadUnfilteredLazyListeners(extension->id(),
760 registered_events);
761 const DictionaryValue* filtered_events =
762 GetFilteredEvents(extension->id());
763 if (filtered_events)
764 listeners_.LoadFilteredLazyListeners(extension->id(), *filtered_events);
765 break;
766 }
767 case extensions::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED: {
768 // Remove all registered lazy listeners from our cache.
769 UnloadedExtensionInfo* unloaded =
770 content::Details<UnloadedExtensionInfo>(details).ptr();
771 listeners_.RemoveLazyListenersForExtension(unloaded->extension->id());
772 break;
773 }
774 default: 749 default:
775 NOTREACHED(); 750 NOTREACHED();
776 return;
777 } 751 }
778 } 752 }
779 753
754 void EventRouter::OnExtensionLoaded(content::BrowserContext* browser_context,
755 const Extension* extension) {
756 // Add all registered lazy listeners to our cache.
757 std::set<std::string> registered_events =
758 GetRegisteredEvents(extension->id());
759 listeners_.LoadUnfilteredLazyListeners(extension->id(), registered_events);
760 const DictionaryValue* filtered_events = GetFilteredEvents(extension->id());
761 if (filtered_events)
762 listeners_.LoadFilteredLazyListeners(extension->id(), *filtered_events);
763 }
764
765 void EventRouter::OnExtensionUnloaded(content::BrowserContext* browser_context,
766 const Extension* extension,
767 UnloadedExtensionInfo::Reason reason) {
768 // Remove all registered lazy listeners from our cache.
769 listeners_.RemoveLazyListenersForExtension(extension->id());
770 }
771
780 Event::Event(const std::string& event_name, 772 Event::Event(const std::string& event_name,
781 scoped_ptr<base::ListValue> event_args) 773 scoped_ptr<base::ListValue> event_args)
782 : event_name(event_name), 774 : event_name(event_name),
783 event_args(event_args.Pass()), 775 event_args(event_args.Pass()),
784 restrict_to_browser_context(NULL), 776 restrict_to_browser_context(NULL),
785 user_gesture(EventRouter::USER_GESTURE_UNKNOWN), 777 user_gesture(EventRouter::USER_GESTURE_UNKNOWN),
786 can_load_ephemeral_apps(false) { 778 can_load_ephemeral_apps(false) {
787 DCHECK(this->event_args.get()); 779 DCHECK(this->event_args.get());
788 } 780 }
789 781
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
831 const std::string& extension_id, 823 const std::string& extension_id,
832 const GURL& listener_url, 824 const GURL& listener_url,
833 content::BrowserContext* browser_context) 825 content::BrowserContext* browser_context)
834 : event_name(event_name), 826 : event_name(event_name),
835 extension_id(extension_id), 827 extension_id(extension_id),
836 listener_url(listener_url), 828 listener_url(listener_url),
837 browser_context(browser_context) { 829 browser_context(browser_context) {
838 } 830 }
839 831
840 } // namespace extensions 832 } // namespace extensions
OLDNEW
« no previous file with comments | « extensions/browser/event_router.h ('k') | extensions/browser/event_router_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698