| 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 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 229 observers_.erase(iters_to_remove[i]); | 229 observers_.erase(iters_to_remove[i]); |
| 230 } | 230 } |
| 231 | 231 |
| 232 void EventRouter::OnListenerAdded(const EventListener* listener) { | 232 void EventRouter::OnListenerAdded(const EventListener* listener) { |
| 233 const std::string& event_name = listener->event_name; | 233 const std::string& event_name = listener->event_name; |
| 234 const EventListenerInfo details(event_name, listener->extension_id); | 234 const EventListenerInfo details(event_name, listener->extension_id); |
| 235 ObserverMap::iterator observer = observers_.find(event_name); | 235 ObserverMap::iterator observer = observers_.find(event_name); |
| 236 if (observer != observers_.end()) | 236 if (observer != observers_.end()) |
| 237 observer->second->OnListenerAdded(details); | 237 observer->second->OnListenerAdded(details); |
| 238 | 238 |
| 239 #if 0 |
| 240 // TODO(felt): Experimentally determine if these are needed, or if they |
| 241 // can be permanently removed. Temporarily removing for now to reduce log |
| 242 // size while under investigation. |
| 239 const Extension* extension = extensions::ExtensionSystem::Get(profile_)-> | 243 const Extension* extension = extensions::ExtensionSystem::Get(profile_)-> |
| 240 extension_service()->GetExtensionById(listener->extension_id, | 244 extension_service()->GetExtensionById(listener->extension_id, |
| 241 ExtensionService::INCLUDE_ENABLED); | 245 ExtensionService::INCLUDE_ENABLED); |
| 242 if (extension) { | 246 if (extension) { |
| 243 scoped_ptr<ListValue> args(new ListValue()); | 247 scoped_ptr<ListValue> args(new ListValue()); |
| 244 if (listener->filter) | 248 if (listener->filter) |
| 245 args->Append(listener->filter->DeepCopy()); | 249 args->Append(listener->filter->DeepCopy()); |
| 246 activity_log_->LogAPIAction( | 250 activity_log_->LogAPIAction( |
| 247 extension, event_name + ".addListener", args.get(), std::string()); | 251 extension, event_name + ".addListener", args.get(), std::string()); |
| 248 } | 252 } |
| 253 #endif |
| 249 } | 254 } |
| 250 | 255 |
| 251 void EventRouter::OnListenerRemoved(const EventListener* listener) { | 256 void EventRouter::OnListenerRemoved(const EventListener* listener) { |
| 252 const std::string& event_name = listener->event_name; | 257 const std::string& event_name = listener->event_name; |
| 253 const EventListenerInfo details(event_name, listener->extension_id); | 258 const EventListenerInfo details(event_name, listener->extension_id); |
| 254 ObserverMap::iterator observer = observers_.find(event_name); | 259 ObserverMap::iterator observer = observers_.find(event_name); |
| 255 if (observer != observers_.end()) | 260 if (observer != observers_.end()) |
| 256 observer->second->OnListenerRemoved(details); | 261 observer->second->OnListenerRemoved(details); |
| 257 | 262 |
| 258 void* profile = | 263 void* profile = |
| 259 listener->process | 264 listener->process |
| 260 ? Profile::FromBrowserContext(listener->process->GetBrowserContext()) | 265 ? Profile::FromBrowserContext(listener->process->GetBrowserContext()) |
| 261 : NULL; | 266 : NULL; |
| 262 BrowserThread::PostTask( | 267 BrowserThread::PostTask( |
| 263 BrowserThread::IO, FROM_HERE, | 268 BrowserThread::IO, FROM_HERE, |
| 264 base::Bind(&NotifyEventListenerRemovedOnIOThread, | 269 base::Bind(&NotifyEventListenerRemovedOnIOThread, |
| 265 profile, listener->extension_id, event_name)); | 270 profile, listener->extension_id, event_name)); |
| 266 | 271 #if 0 |
| 272 // TODO(felt): Experimentally determine if these are needed, or if they |
| 273 // can be permanently removed. Temporarily removing for now to reduce log |
| 274 // size while under investigation. |
| 267 const Extension* extension = extensions::ExtensionSystem::Get(profile_)-> | 275 const Extension* extension = extensions::ExtensionSystem::Get(profile_)-> |
| 268 extension_service()->GetExtensionById(listener->extension_id, | 276 extension_service()->GetExtensionById(listener->extension_id, |
| 269 ExtensionService::INCLUDE_ENABLED); | 277 ExtensionService::INCLUDE_ENABLED); |
| 270 if (extension) { | 278 if (extension) { |
| 271 scoped_ptr<ListValue> args(new ListValue()); | 279 scoped_ptr<ListValue> args(new ListValue()); |
| 272 activity_log_->LogAPIAction( | 280 activity_log_->LogAPIAction( |
| 273 extension, event_name + ".removeListener", args.get(), std::string()); | 281 extension, event_name + ".removeListener", args.get(), std::string()); |
| 274 } | 282 } |
| 283 #endif |
| 275 } | 284 } |
| 276 | 285 |
| 277 void EventRouter::AddLazyEventListener(const std::string& event_name, | 286 void EventRouter::AddLazyEventListener(const std::string& event_name, |
| 278 const std::string& extension_id) { | 287 const std::string& extension_id) { |
| 279 scoped_ptr<EventListener> listener(new EventListener( | 288 scoped_ptr<EventListener> listener(new EventListener( |
| 280 event_name, extension_id, NULL, scoped_ptr<DictionaryValue>())); | 289 event_name, extension_id, NULL, scoped_ptr<DictionaryValue>())); |
| 281 bool is_new = listeners_.AddListener(listener.Pass()); | 290 bool is_new = listeners_.AddListener(listener.Pass()); |
| 282 | 291 |
| 283 if (is_new) { | 292 if (is_new) { |
| 284 ExtensionPrefs* prefs = extensions::ExtensionSystem::Get(profile_)-> | 293 ExtensionPrefs* prefs = extensions::ExtensionSystem::Get(profile_)-> |
| (...skipping 431 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 716 copy->will_dispatch_callback = will_dispatch_callback; | 725 copy->will_dispatch_callback = will_dispatch_callback; |
| 717 return copy; | 726 return copy; |
| 718 } | 727 } |
| 719 | 728 |
| 720 EventListenerInfo::EventListenerInfo(const std::string& event_name, | 729 EventListenerInfo::EventListenerInfo(const std::string& event_name, |
| 721 const std::string& extension_id) | 730 const std::string& extension_id) |
| 722 : event_name(event_name), | 731 : event_name(event_name), |
| 723 extension_id(extension_id) {} | 732 extension_id(extension_id) {} |
| 724 | 733 |
| 725 } // namespace extensions | 734 } // namespace extensions |
| OLD | NEW |