Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 CHROME_BROWSER_EXTENSIONS_EXTENSION_EVENT_ROUTER_H_ | 5 #ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_EVENT_ROUTER_H_ |
| 6 #define CHROME_BROWSER_EXTENSIONS_EXTENSION_EVENT_ROUTER_H_ | 6 #define CHROME_BROWSER_EXTENSIONS_EXTENSION_EVENT_ROUTER_H_ |
| 7 #pragma once | 7 #pragma once |
| 8 | 8 |
| 9 #include <map> | 9 #include <map> |
| 10 #include <set> | 10 #include <set> |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 82 void DispatchEventsToRenderersAcrossIncognito( | 82 void DispatchEventsToRenderersAcrossIncognito( |
| 83 const std::string& event_name, | 83 const std::string& event_name, |
| 84 const std::string& event_args, | 84 const std::string& event_args, |
| 85 Profile* restrict_to_profile, | 85 Profile* restrict_to_profile, |
| 86 const std::string& cross_incognito_args, | 86 const std::string& cross_incognito_args, |
| 87 const GURL& event_url); | 87 const GURL& event_url); |
| 88 | 88 |
| 89 protected: | 89 protected: |
| 90 // Shared by DispatchEvent*. If |extension_id| is empty, the event is | 90 // Shared by DispatchEvent*. If |extension_id| is empty, the event is |
| 91 // broadcast. | 91 // broadcast. |
| 92 // Eventually DispatchEventImpl will be called, but it may be delayed | |
| 93 // sif the extension has a lazy background page. | |
| 94 void MaybeDispatchEventImpl( | |
| 95 const std::string& extension_id, | |
| 96 const std::string& event_name, | |
| 97 const std::string& event_args, | |
| 98 Profile* restrict_to_profile, | |
| 99 const std::string& cross_incognito_args, | |
| 100 const GURL& event_url); | |
| 92 virtual void DispatchEventImpl( | 101 virtual void DispatchEventImpl( |
| 93 const std::string& extension_id, | 102 const std::string& extension_id, |
| 94 const std::string& event_name, | 103 const std::string& event_name, |
| 95 const std::string& event_args, | 104 const std::string& event_args, |
| 96 Profile* restrict_to_profile, | 105 Profile* restrict_to_profile, |
| 97 const std::string& cross_incognito_args, | 106 const std::string& cross_incognito_args, |
| 98 const GURL& event_url); | 107 const GURL& event_url); |
| 99 | 108 |
| 109 // Store the event and dispatch it when the background page is done loading. | |
| 110 void EnqueueEvent(const std::string& extension_id, | |
| 111 const std::string& event_name, | |
| 112 const std::string& event_args, | |
| 113 Profile* restrict_to_profile, | |
| 114 const std::string& cross_incognito_args, | |
| 115 const GURL& event_url); | |
| 116 void DispatchPendingEvents(const std::string& extension_id); | |
| 117 void ClearPendingEvents(const std::string& extension_id); | |
| 118 | |
| 100 private: | 119 private: |
| 101 // An extension listening to an event. | 120 // An extension listening to an event. |
| 102 struct EventListener; | 121 struct EventListener; |
| 103 | 122 |
| 123 // An event that is waiting to be dispatched. | |
| 124 struct PendingEvent; | |
| 125 | |
| 104 virtual void Observe(int type, | 126 virtual void Observe(int type, |
| 105 const NotificationSource& source, | 127 const NotificationSource& source, |
| 106 const NotificationDetails& details); | 128 const NotificationDetails& details); |
| 107 | 129 |
| 108 Profile* profile_; | 130 Profile* profile_; |
| 109 | 131 |
| 110 NotificationRegistrar registrar_; | 132 NotificationRegistrar registrar_; |
| 111 | 133 |
| 112 scoped_refptr<ExtensionDevToolsManager> extension_devtools_manager_; | 134 scoped_refptr<ExtensionDevToolsManager> extension_devtools_manager_; |
| 113 | 135 |
| 114 // A map between an event name and a set of extensions that are listening | 136 // A map between an event name and a set of extensions that are listening |
| 115 // to that event. | 137 // to that event. |
| 116 typedef std::map<std::string, std::set<EventListener> > ListenerMap; | 138 typedef std::map<std::string, std::set<EventListener> > ListenerMap; |
| 117 ListenerMap listeners_; | 139 ListenerMap listeners_; |
| 118 | 140 |
| 141 // A map between an extension id and the queue of events pending | |
| 142 // the load of it's background page. | |
| 143 typedef std::vector<PendingEvent> PendingEventsQueue; | |
|
Aaron Boodman
2011/08/18 19:25:55
You can use std::queue.
Tessa MacDuff
2011/08/18 20:49:39
Yeah, I just thought it was overkill since I never
Aaron Boodman
2011/08/18 21:19:23
ok.
Tessa MacDuff
2011/08/23 18:18:42
Done.
| |
| 144 std::map<std::string, PendingEventsQueue> pending_events_; | |
|
Aaron Boodman
2011/08/18 19:25:55
Nit: this is a bit inefficient because as these ma
Tessa MacDuff
2011/08/23 18:18:42
Done.
| |
| 145 | |
| 119 DISALLOW_COPY_AND_ASSIGN(ExtensionEventRouter); | 146 DISALLOW_COPY_AND_ASSIGN(ExtensionEventRouter); |
| 120 }; | 147 }; |
| 121 | 148 |
| 122 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_EVENT_ROUTER_H_ | 149 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_EVENT_ROUTER_H_ |
| OLD | NEW |