| 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); | 
|  |