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

Side by Side Diff: chrome/browser/extensions/extension_event_router.cc

Issue 6961027: Change event routers from singletons to being owned by the ExtensionService. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: all is built on sand Created 9 years, 7 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
OLDNEW
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
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
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 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_cookies_api.cc ('k') | chrome/browser/extensions/extension_history_api.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698