| 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 #include "chrome/browser/extensions/extension_event_router.h" | 5 #include "chrome/browser/extensions/extension_event_router.h" |
| 6 | 6 |
| 7 #include "base/values.h" | 7 #include "base/values.h" |
| 8 #include "chrome/browser/extensions/extension_devtools_manager.h" | 8 #include "chrome/browser/extensions/extension_devtools_manager.h" |
| 9 #include "chrome/browser/extensions/extension_processes_api.h" | 9 #include "chrome/browser/extensions/extension_processes_api.h" |
| 10 #include "chrome/browser/extensions/extension_processes_api_constants.h" | 10 #include "chrome/browser/extensions/extension_processes_api_constants.h" |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 99 EventListener listener(process, extension_id); | 99 EventListener listener(process, extension_id); |
| 100 DCHECK_EQ(listeners_[event_name].count(listener), 0u) << event_name; | 100 DCHECK_EQ(listeners_[event_name].count(listener), 0u) << event_name; |
| 101 listeners_[event_name].insert(listener); | 101 listeners_[event_name].insert(listener); |
| 102 | 102 |
| 103 if (extension_devtools_manager_.get()) | 103 if (extension_devtools_manager_.get()) |
| 104 extension_devtools_manager_->AddEventListener(event_name, process->id()); | 104 extension_devtools_manager_->AddEventListener(event_name, process->id()); |
| 105 | 105 |
| 106 // We lazily tell the TaskManager to start updating when listeners to the | 106 // We lazily tell the TaskManager to start updating when listeners to the |
| 107 // processes.onUpdated event arrive. | 107 // processes.onUpdated event arrive. |
| 108 if (event_name.compare(extension_processes_api_constants::kOnUpdated) == 0) | 108 if (event_name.compare(extension_processes_api_constants::kOnUpdated) == 0) |
| 109 ExtensionProcessesEventRouter::GetInstance()->ListenerAdded(); | 109 profile_->GetExtensionService()->processes_event_router()->ListenerAdded(); |
| 110 } | 110 } |
| 111 | 111 |
| 112 void ExtensionEventRouter::RemoveEventListener( | 112 void ExtensionEventRouter::RemoveEventListener( |
| 113 const std::string& event_name, | 113 const std::string& event_name, |
| 114 RenderProcessHost* process, | 114 RenderProcessHost* process, |
| 115 const std::string& extension_id) { | 115 const std::string& extension_id) { |
| 116 EventListener listener(process, extension_id); | 116 EventListener listener(process, extension_id); |
| 117 DCHECK_EQ(listeners_[event_name].count(listener), 1u) << | 117 DCHECK_EQ(listeners_[event_name].count(listener), 1u) << |
| 118 " PID=" << process->id() << " extension=" << extension_id << | 118 " PID=" << process->id() << " extension=" << extension_id << |
| 119 " event=" << event_name; | 119 " event=" << event_name; |
| 120 listeners_[event_name].erase(listener); | 120 listeners_[event_name].erase(listener); |
| 121 // Note: extension_id may point to data in the now-deleted listeners_ object. | 121 // Note: extension_id may point to data in the now-deleted listeners_ object. |
| 122 // Do not use. | 122 // Do not use. |
| 123 | 123 |
| 124 if (extension_devtools_manager_.get()) | 124 if (extension_devtools_manager_.get()) |
| 125 extension_devtools_manager_->RemoveEventListener(event_name, process->id()); | 125 extension_devtools_manager_->RemoveEventListener(event_name, process->id()); |
| 126 | 126 |
| 127 // If a processes.onUpdated event listener is removed (or a process with one | 127 // If a processes.onUpdated event listener is removed (or a process with one |
| 128 // exits), then we let the TaskManager know that it has one fewer listener. | 128 // exits), then we let the TaskManager know that it has one fewer listener. |
| 129 if (event_name.compare(extension_processes_api_constants::kOnUpdated) == 0) | 129 if (event_name.compare(extension_processes_api_constants::kOnUpdated) == 0) |
| 130 ExtensionProcessesEventRouter::GetInstance()->ListenerRemoved(); | 130 profile_->GetExtensionService()->processes_event_router()-> |
| 131 ListenerRemoved(); |
| 131 | 132 |
| 132 BrowserThread::PostTask( | 133 BrowserThread::PostTask( |
| 133 BrowserThread::IO, FROM_HERE, | 134 BrowserThread::IO, FROM_HERE, |
| 134 NewRunnableFunction( | 135 NewRunnableFunction( |
| 135 &NotifyEventListenerRemovedOnIOThread, | 136 &NotifyEventListenerRemovedOnIOThread, |
| 136 profile_->GetRuntimeId(), listener.extension_id, event_name)); | 137 profile_->GetRuntimeId(), listener.extension_id, event_name)); |
| 137 } | 138 } |
| 138 | 139 |
| 139 bool ExtensionEventRouter::HasEventListener(const std::string& event_name) { | 140 bool ExtensionEventRouter::HasEventListener(const std::string& event_name) { |
| 140 return (listeners_.find(event_name) != listeners_.end() && | 141 return (listeners_.find(event_name) != listeners_.end() && |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 235 } | 236 } |
| 236 } | 237 } |
| 237 } | 238 } |
| 238 break; | 239 break; |
| 239 } | 240 } |
| 240 default: | 241 default: |
| 241 NOTREACHED(); | 242 NOTREACHED(); |
| 242 return; | 243 return; |
| 243 } | 244 } |
| 244 } | 245 } |
| OLD | NEW |