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

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

Issue 11368145: Lazy-creates BluetoothAdapter in ExtensionBluetoothEventRouter (EBEE). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 1 month 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) 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 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 // processes.onUpdated or processes.onUpdatedWithMemory events arrive. 179 // processes.onUpdated or processes.onUpdatedWithMemory events arrive.
180 const std::string& event_name = listener->event_name; 180 const std::string& event_name = listener->event_name;
181 if (event_name.compare( 181 if (event_name.compare(
182 extensions::processes_api_constants::kOnUpdated) == 0 || 182 extensions::processes_api_constants::kOnUpdated) == 0 ||
183 event_name.compare( 183 event_name.compare(
184 extensions::processes_api_constants::kOnUpdatedWithMemory) == 0) 184 extensions::processes_api_constants::kOnUpdatedWithMemory) == 0)
185 extensions::ProcessesEventRouter::GetInstance()->ListenerAdded(); 185 extensions::ProcessesEventRouter::GetInstance()->ListenerAdded();
186 186
187 if (SystemInfoEventRouter::IsSystemInfoEvent(event_name)) 187 if (SystemInfoEventRouter::IsSystemInfoEvent(event_name))
188 SystemInfoEventRouter::GetInstance()->AddEventListener(event_name); 188 SystemInfoEventRouter::GetInstance()->AddEventListener(event_name);
189 ExtensionService* service =
190 ExtensionSystem::Get(profile_)->extension_service();
191 service->NotifyExtensionEventRoutersOnListenerAdded(event_name);
bryeung 2012/11/08 19:24:02 I don't think this is the right way of doing this.
youngki 2012/11/09 05:12:52 I will wait for Yoyo's CL to be landed and I will
189 } 192 }
190 193
191 void EventRouter::OnListenerRemoved(const EventListener* listener) { 194 void EventRouter::OnListenerRemoved(const EventListener* listener) {
192 // We don't care about lazy events being removed. 195 // We don't care about lazy events being removed.
193 if (!listener->process) 196 if (!listener->process)
194 return; 197 return;
195 198
196 const std::string& event_name = listener->event_name; 199 const std::string& event_name = listener->event_name;
197 if (extension_devtools_manager_.get()) 200 if (extension_devtools_manager_.get())
198 extension_devtools_manager_->RemoveEventListener( 201 extension_devtools_manager_->RemoveEventListener(
199 event_name, listener->process->GetID()); 202 event_name, listener->process->GetID());
200 203
201 // If a processes.onUpdated or processes.onUpdatedWithMemory event listener 204 // If a processes.onUpdated or processes.onUpdatedWithMemory event listener
202 // is removed (or a process with one exits), then we let the extension API 205 // is removed (or a process with one exits), then we let the extension API
203 // know that it has one fewer listener. 206 // know that it has one fewer listener.
204 if (event_name.compare( 207 if (event_name.compare(
205 extensions::processes_api_constants::kOnUpdated) == 0 || 208 extensions::processes_api_constants::kOnUpdated) == 0 ||
206 event_name.compare( 209 event_name.compare(
207 extensions::processes_api_constants::kOnUpdatedWithMemory) == 0) 210 extensions::processes_api_constants::kOnUpdatedWithMemory) == 0)
208 extensions::ProcessesEventRouter::GetInstance()->ListenerRemoved(); 211 extensions::ProcessesEventRouter::GetInstance()->ListenerRemoved();
209 212
210 BrowserThread::PostTask( 213 BrowserThread::PostTask(
211 BrowserThread::IO, FROM_HERE, 214 BrowserThread::IO, FROM_HERE,
212 base::Bind(&NotifyEventListenerRemovedOnIOThread, 215 base::Bind(&NotifyEventListenerRemovedOnIOThread,
213 profile_, listener->extension_id, listener->event_name)); 216 profile_, listener->extension_id, listener->event_name));
214 217
215 if (SystemInfoEventRouter::IsSystemInfoEvent(event_name)) 218 if (SystemInfoEventRouter::IsSystemInfoEvent(event_name))
216 SystemInfoEventRouter::GetInstance()->RemoveEventListener(event_name); 219 SystemInfoEventRouter::GetInstance()->RemoveEventListener(event_name);
220 ExtensionService* service =
221 ExtensionSystem::Get(profile_)->extension_service();
222 service->NotifyExtensionEventRoutersOnListenerRemoved(event_name);
217 } 223 }
218 224
219 void EventRouter::AddLazyEventListener(const std::string& event_name, 225 void EventRouter::AddLazyEventListener(const std::string& event_name,
220 const std::string& extension_id) { 226 const std::string& extension_id) {
221 scoped_ptr<EventListener> listener(new EventListener( 227 scoped_ptr<EventListener> listener(new EventListener(
222 event_name, extension_id, NULL, scoped_ptr<DictionaryValue>())); 228 event_name, extension_id, NULL, scoped_ptr<DictionaryValue>()));
223 bool is_new = listeners_.AddListener(listener.Pass()); 229 bool is_new = listeners_.AddListener(listener.Pass());
224 230
225 if (is_new) { 231 if (is_new) {
226 ExtensionPrefs* prefs = 232 ExtensionPrefs* prefs =
(...skipping 448 matching lines...) Expand 10 before | Expand all | Expand 10 after
675 event_args(event_args.Pass()), 681 event_args(event_args.Pass()),
676 event_url(event_url), 682 event_url(event_url),
677 restrict_to_profile(restrict_to_profile), 683 restrict_to_profile(restrict_to_profile),
678 cross_incognito_args(NULL), 684 cross_incognito_args(NULL),
679 user_gesture(user_gesture), 685 user_gesture(user_gesture),
680 info(info) {} 686 info(info) {}
681 687
682 Event::~Event() {} 688 Event::~Event() {}
683 689
684 } // namespace extensions 690 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698