| Index: chrome/browser/extensions/bluetooth_event_router.h | 
| diff --git a/chrome/browser/extensions/bluetooth_event_router.h b/chrome/browser/extensions/bluetooth_event_router.h | 
| index 657053879190b2520ae6f936a4d4e8c665fa1105..f521a170721673d2798d434fcd90fee00e459629 100644 | 
| --- a/chrome/browser/extensions/bluetooth_event_router.h | 
| +++ b/chrome/browser/extensions/bluetooth_event_router.h | 
| @@ -6,6 +6,7 @@ | 
| #define CHROME_BROWSER_EXTENSIONS_BLUETOOTH_EVENT_ROUTER_H_ | 
|  | 
| #include <map> | 
| +#include <string> | 
|  | 
| #include "base/memory/ref_counted.h" | 
| #include "base/memory/scoped_vector.h" | 
| @@ -24,15 +25,17 @@ class ExtensionBluetoothEventRouter | 
|  | 
| // adapter() will return NULL if the bluetooth adapter is not supported in the | 
| // current platform. | 
| -  const device::BluetoothAdapter* adapter() const { | 
| -    return adapter_.get(); | 
| -  } | 
| +  scoped_refptr<const device::BluetoothAdapter> adapter(); | 
|  | 
| // GetMutableAdapter will return NULL if the bluetooth adapter is not | 
| // supported in the current platform. | 
| -  device::BluetoothAdapter* GetMutableAdapter() { | 
| -    return adapter_.get(); | 
| -  } | 
| +  scoped_refptr<device::BluetoothAdapter> GetMutableAdapter(); | 
| + | 
| +  // Called when an event listener is added. | 
| +  void OnEventListenerAdded(const std::string& event_name); | 
| + | 
| +  // Called when an event listener is removed. | 
| +  void OnEventListenerRemoved(const std::string& event_name); | 
|  | 
| // Register the BluetoothSocket |socket| for use by the extensions system. | 
| // This class will hold onto the socket for its lifetime, or until | 
| @@ -73,7 +76,15 @@ class ExtensionBluetoothEventRouter | 
| void SetAdapterForTest(device::BluetoothAdapter* adapter) { | 
| adapter_ = adapter; | 
| } | 
| + | 
| private: | 
| +  static bool IsBluetoothEvent(const std::string& event_name); | 
| + | 
| +  bool IsAdapterNeeded() const; | 
| + | 
| +  void InitializeAdapterIfNeeded(); | 
| +  void MaybeReleaseAdapter(); | 
| + | 
| void DispatchBooleanValueEvent(const char* event_name, bool value); | 
|  | 
| bool send_discovery_events_; | 
| @@ -82,6 +93,8 @@ class ExtensionBluetoothEventRouter | 
| Profile* profile_; | 
| scoped_refptr<device::BluetoothAdapter> adapter_; | 
|  | 
| +  int num_event_listeners_; | 
| + | 
| // The next id to use for referring to a BluetoothSocket.  We avoid using | 
| // the fd of the socket because we don't want to leak that information to | 
| // the extension javascript. | 
|  |