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 "chrome/browser/extensions/event_router.h" | 5 #include "chrome/browser/extensions/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 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
191 // TODO(yoz): Migrate these to become EventRouter observers. | 191 // TODO(yoz): Migrate these to become EventRouter observers. |
192 // EventRouter shouldn't need to know about them. | 192 // EventRouter shouldn't need to know about them. |
193 ExtensionDevToolsManager* extension_devtools_manager = | 193 ExtensionDevToolsManager* extension_devtools_manager = |
194 ExtensionSystem::Get(profile_)->devtools_manager(); | 194 ExtensionSystem::Get(profile_)->devtools_manager(); |
195 if (extension_devtools_manager) | 195 if (extension_devtools_manager) |
196 extension_devtools_manager->AddEventListener(event_name, | 196 extension_devtools_manager->AddEventListener(event_name, |
197 listener->process->GetID()); | 197 listener->process->GetID()); |
198 | 198 |
199 if (SystemInfoEventRouter::IsSystemInfoEvent(event_name)) | 199 if (SystemInfoEventRouter::IsSystemInfoEvent(event_name)) |
200 SystemInfoEventRouter::GetInstance()->AddEventListener(event_name); | 200 SystemInfoEventRouter::GetInstance()->AddEventListener(event_name); |
| 201 ExtensionService* service = |
| 202 ExtensionSystem::Get(profile_)->extension_service(); |
| 203 service->NotifyExtensionEventRoutersOnListenerAdded(event_name); |
201 } | 204 } |
202 | 205 |
203 void EventRouter::OnListenerRemoved(const EventListener* listener) { | 206 void EventRouter::OnListenerRemoved(const EventListener* listener) { |
204 // We don't care about lazy events being removed. | 207 // We don't care about lazy events being removed. |
205 if (!listener->process) | 208 if (!listener->process) |
206 return; | 209 return; |
207 | 210 |
208 const std::string& event_name = listener->event_name; | 211 const std::string& event_name = listener->event_name; |
209 ObserverMap::iterator observer = observers_.find(event_name); | 212 ObserverMap::iterator observer = observers_.find(event_name); |
210 if (observer != observers_.end()) | 213 if (observer != observers_.end()) |
211 observer->second->OnListenerRemoved(event_name); | 214 observer->second->OnListenerRemoved(event_name); |
212 | 215 |
213 // TODO(yoz): Migrate these to become EventRouter observers. | 216 // TODO(yoz): Migrate these to become EventRouter observers. |
214 // EventRouter shouldn't need to know about them. | 217 // EventRouter shouldn't need to know about them. |
215 ExtensionDevToolsManager* extension_devtools_manager = | 218 ExtensionDevToolsManager* extension_devtools_manager = |
216 ExtensionSystem::Get(profile_)->devtools_manager(); | 219 ExtensionSystem::Get(profile_)->devtools_manager(); |
217 if (extension_devtools_manager) | 220 if (extension_devtools_manager) |
218 extension_devtools_manager->RemoveEventListener( | 221 extension_devtools_manager->RemoveEventListener( |
219 event_name, listener->process->GetID()); | 222 event_name, listener->process->GetID()); |
220 | 223 |
221 BrowserThread::PostTask( | 224 BrowserThread::PostTask( |
222 BrowserThread::IO, FROM_HERE, | 225 BrowserThread::IO, FROM_HERE, |
223 base::Bind(&NotifyEventListenerRemovedOnIOThread, | 226 base::Bind(&NotifyEventListenerRemovedOnIOThread, |
224 profile_, listener->extension_id, event_name)); | 227 profile_, listener->extension_id, event_name)); |
225 | 228 |
226 if (SystemInfoEventRouter::IsSystemInfoEvent(event_name)) | 229 if (SystemInfoEventRouter::IsSystemInfoEvent(event_name)) |
227 SystemInfoEventRouter::GetInstance()->RemoveEventListener(event_name); | 230 SystemInfoEventRouter::GetInstance()->RemoveEventListener(event_name); |
| 231 ExtensionService* service = |
| 232 ExtensionSystem::Get(profile_)->extension_service(); |
| 233 service->NotifyExtensionEventRoutersOnListenerRemoved(event_name); |
228 } | 234 } |
229 | 235 |
230 void EventRouter::AddLazyEventListener(const std::string& event_name, | 236 void EventRouter::AddLazyEventListener(const std::string& event_name, |
231 const std::string& extension_id) { | 237 const std::string& extension_id) { |
232 scoped_ptr<EventListener> listener(new EventListener( | 238 scoped_ptr<EventListener> listener(new EventListener( |
233 event_name, extension_id, NULL, scoped_ptr<DictionaryValue>())); | 239 event_name, extension_id, NULL, scoped_ptr<DictionaryValue>())); |
234 bool is_new = listeners_.AddListener(listener.Pass()); | 240 bool is_new = listeners_.AddListener(listener.Pass()); |
235 | 241 |
236 if (is_new) { | 242 if (is_new) { |
237 ExtensionPrefs* prefs = | 243 ExtensionPrefs* prefs = |
(...skipping 448 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
686 event_args(event_args.Pass()), | 692 event_args(event_args.Pass()), |
687 event_url(event_url), | 693 event_url(event_url), |
688 restrict_to_profile(restrict_to_profile), | 694 restrict_to_profile(restrict_to_profile), |
689 cross_incognito_args(NULL), | 695 cross_incognito_args(NULL), |
690 user_gesture(user_gesture), | 696 user_gesture(user_gesture), |
691 info(info) {} | 697 info(info) {} |
692 | 698 |
693 Event::~Event() {} | 699 Event::~Event() {} |
694 | 700 |
695 } // namespace extensions | 701 } // namespace extensions |
OLD | NEW |