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

Unified Diff: chrome/browser/extensions/bluetooth_event_router.cc

Issue 11369055: Delayed adding BluetoothEventRouter as BluetoothAdapter observer until when the (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed BluetoothApiTest. 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/bluetooth_event_router.cc
diff --git a/chrome/browser/extensions/bluetooth_event_router.cc b/chrome/browser/extensions/bluetooth_event_router.cc
index d38db9e8b925a6438b7a199889ee2f576b1ea5dc..b969e8b46eadd12fe0bfdd4433a25f6993ce7562 100644
--- a/chrome/browser/extensions/bluetooth_event_router.cc
+++ b/chrome/browser/extensions/bluetooth_event_router.cc
@@ -27,10 +27,20 @@ ExtensionBluetoothEventRouter::ExtensionBluetoothEventRouter(Profile* profile)
responsible_for_discovery_(false),
profile_(profile),
adapter_(device::BluetoothAdapterFactory::DefaultAdapter()),
+ observing_(false),
+ next_socket_id_(1) {
+ DCHECK(profile_);
+}
+
+ExtensionBluetoothEventRouter::ExtensionBluetoothEventRouter(
+ Profile* profile, device::BluetoothAdapter* adapter)
+ : send_discovery_events_(false),
+ responsible_for_discovery_(false),
+ profile_(profile),
+ adapter_(adapter),
+ observing_(false),
next_socket_id_(1) {
DCHECK(profile_);
- if (adapter_.get())
- adapter_->AddObserver(this);
}
ExtensionBluetoothEventRouter::~ExtensionBluetoothEventRouter() {
@@ -62,6 +72,22 @@ bool ExtensionBluetoothEventRouter::ReleaseSocket(int id) {
return true;
}
+bool ExtensionBluetoothEventRouter::IsBluetoothEvent(
+ const std::string& event_name) {
+ return
+ event_name == extensions::event_names::kBluetoothOnAvailabilityChanged ||
+ event_name == extensions::event_names::kBluetoothOnDiscoveringChanged ||
+ event_name == extensions::event_names::kBluetoothOnPowerChanged;
+}
+
+void ExtensionBluetoothEventRouter::OnEventListenerAdded(
+ const std::string& event_name) {
+ if (!observing_ && IsBluetoothEvent(event_name) && adapter_.get()) {
+ adapter_->AddObserver(this);
+ observing_ = true;
+ }
+}
+
scoped_refptr<device::BluetoothSocket>
ExtensionBluetoothEventRouter::GetSocket(int id) {
SocketMap::iterator socket_entry = socket_map_.find(id);
« no previous file with comments | « chrome/browser/extensions/bluetooth_event_router.h ('k') | chrome/browser/extensions/bluetooth_event_router_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698