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

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

Issue 411733002: WIP: diff which plumbs through the event URL. Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 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 | Annotate | Revision Log
« no previous file with comments | « extensions/browser/event_listener_map_unittest.cc ('k') | extensions/browser/event_router.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 #ifndef EXTENSIONS_BROWSER_EVENT_ROUTER_H_ 5 #ifndef EXTENSIONS_BROWSER_EVENT_ROUTER_H_
6 #define EXTENSIONS_BROWSER_EVENT_ROUTER_H_ 6 #define EXTENSIONS_BROWSER_EVENT_ROUTER_H_
7 7
8 #include <map> 8 #include <map>
9 #include <set> 9 #include <set>
10 #include <string> 10 #include <string>
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 scoped_ptr<base::ListValue> event_args, 86 scoped_ptr<base::ListValue> event_args,
87 UserGestureState user_gesture, 87 UserGestureState user_gesture,
88 const EventFilteringInfo& info); 88 const EventFilteringInfo& info);
89 89
90 // An EventRouter is shared between |browser_context| and its associated 90 // An EventRouter is shared between |browser_context| and its associated
91 // incognito context. |extension_prefs| may be NULL in tests. 91 // incognito context. |extension_prefs| may be NULL in tests.
92 EventRouter(content::BrowserContext* browser_context, 92 EventRouter(content::BrowserContext* browser_context,
93 ExtensionPrefs* extension_prefs); 93 ExtensionPrefs* extension_prefs);
94 virtual ~EventRouter(); 94 virtual ~EventRouter();
95 95
96 // Add or remove the process/extension pair as a listener for |event_name|. 96 // Add or remove a listener for |event_name| given the listener's
97 // |extension_id| and/or |listener_url|.
98 //
97 // Note that multiple extensions can share a process due to process 99 // Note that multiple extensions can share a process due to process
98 // collapsing. Also, a single extension can have 2 processes if it is a split 100 // collapsing. Also, a single extension can have 2 processes if it is a split
99 // mode extension. 101 // mode extension.
100 void AddEventListener(const std::string& event_name, 102 void AddEventListener(const std::string& event_name,
101 content::RenderProcessHost* process, 103 content::RenderProcessHost* process,
102 const std::string& extension_id); 104 const std::string& extension_id);
103 void RemoveEventListener(const std::string& event_name, 105 void RemoveEventListener(const std::string& event_name,
104 content::RenderProcessHost* process, 106 content::RenderProcessHost* process,
105 const std::string& extension_id); 107 const std::string& extension_id);
106 108
109 // Add or remove a listener for |event_name| given the listener's
110 // URL. TODO better comment.
111 void AddEventListenerForURL(const std::string& event_name,
112 content::RenderProcessHost* process,
113 const GURL& listener_url);
114 void RemoveEventListenerForURL(const std::string& event_name,
115 content::RenderProcessHost* process,
116 const GURL& listener_url);
117
107 EventListenerMap& listeners() { return listeners_; } 118 EventListenerMap& listeners() { return listeners_; }
108 119
109 // Registers an observer to be notified when an event listener for 120 // Registers an observer to be notified when an event listener for
110 // |event_name| is added or removed. There can currently be only one observer 121 // |event_name| is added or removed. There can currently be only one observer
111 // for each distinct |event_name|. 122 // for each distinct |event_name|.
112 void RegisterObserver(Observer* observer, 123 void RegisterObserver(Observer* observer,
113 const std::string& event_name); 124 const std::string& event_name);
114 125
115 // Unregisters an observer from all events. 126 // Unregisters an observer from all events.
116 void UnregisterObserver(Observer* observer); 127 void UnregisterObserver(Observer* observer);
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 // Ensures that all lazy background pages that are interested in the given 227 // Ensures that all lazy background pages that are interested in the given
217 // event are loaded, and queues the event if the page is not ready yet. 228 // event are loaded, and queues the event if the page is not ready yet.
218 // Inserts an EventDispatchIdentifier into |already_dispatched| for each lazy 229 // Inserts an EventDispatchIdentifier into |already_dispatched| for each lazy
219 // event dispatch that is queued. 230 // event dispatch that is queued.
220 void DispatchLazyEvent(const std::string& extension_id, 231 void DispatchLazyEvent(const std::string& extension_id,
221 const linked_ptr<Event>& event, 232 const linked_ptr<Event>& event,
222 std::set<EventDispatchIdentifier>* already_dispatched); 233 std::set<EventDispatchIdentifier>* already_dispatched);
223 234
224 // Dispatches the event to the specified extension running in |process|. 235 // Dispatches the event to the specified extension running in |process|.
225 void DispatchEventToProcess(const std::string& extension_id, 236 void DispatchEventToProcess(const std::string& extension_id,
237 const GURL& listener_url,
226 content::RenderProcessHost* process, 238 content::RenderProcessHost* process,
227 const linked_ptr<Event>& event); 239 const linked_ptr<Event>& event);
228 240
229 // Returns false when the event is scoped to a context and the listening 241 // Returns false when the event is scoped to a context and the listening
230 // extension does not have access to events from that context. Also fills 242 // extension does not have access to events from that context. Also fills
231 // |event_args| with the proper arguments to send, which may differ if 243 // |event_args| with the proper arguments to send, which may differ if
232 // the event crosses the incognito boundary. 244 // the event crosses the incognito boundary.
233 bool CanDispatchEventToBrowserContext(content::BrowserContext* context, 245 bool CanDispatchEventToBrowserContext(content::BrowserContext* context,
234 const Extension* extension, 246 const Extension* extension,
235 const linked_ptr<Event>& event); 247 const linked_ptr<Event>& event);
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
350 ~Event(); 362 ~Event();
351 363
352 // Makes a deep copy of this instance. Ownership is transferred to the 364 // Makes a deep copy of this instance. Ownership is transferred to the
353 // caller. 365 // caller.
354 Event* DeepCopy(); 366 Event* DeepCopy();
355 }; 367 };
356 368
357 struct EventListenerInfo { 369 struct EventListenerInfo {
358 EventListenerInfo(const std::string& event_name, 370 EventListenerInfo(const std::string& event_name,
359 const std::string& extension_id, 371 const std::string& extension_id,
372 const GURL& listener_url,
360 content::BrowserContext* browser_context); 373 content::BrowserContext* browser_context);
361 // The event name including any sub-event, e.g. "runtime.onStartup" or 374 // The event name including any sub-event, e.g. "runtime.onStartup" or
362 // "webRequest.onCompleted/123". 375 // "webRequest.onCompleted/123".
363 const std::string event_name; 376 const std::string event_name;
364 377
365 const std::string extension_id; 378 const std::string extension_id;
379 const GURL listener_url;
366 content::BrowserContext* browser_context; 380 content::BrowserContext* browser_context;
367 }; 381 };
368 382
369 } // namespace extensions 383 } // namespace extensions
370 384
371 #endif // EXTENSIONS_BROWSER_EVENT_ROUTER_H_ 385 #endif // EXTENSIONS_BROWSER_EVENT_ROUTER_H_
OLDNEW
« no previous file with comments | « extensions/browser/event_listener_map_unittest.cc ('k') | extensions/browser/event_router.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698