diff options
Diffstat (limited to 'chrome/browser/extensions/api/bluetooth/bluetooth_event_router.h')
-rw-r--r-- | chrome/browser/extensions/api/bluetooth/bluetooth_event_router.h | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/chrome/browser/extensions/api/bluetooth/bluetooth_event_router.h b/chrome/browser/extensions/api/bluetooth/bluetooth_event_router.h index d3c3a9a..4d86b4f 100644 --- a/chrome/browser/extensions/api/bluetooth/bluetooth_event_router.h +++ b/chrome/browser/extensions/api/bluetooth/bluetooth_event_router.h @@ -49,6 +49,17 @@ class BluetoothEventRouter : public device::BluetoothAdapter::Observer, void GetAdapter( const device::BluetoothAdapterFactory::AdapterCallback& callback); + // Register the BluetoothSocket |socket| for use by the extensions system. + // This class will hold onto the socket for its lifetime until + // ReleaseSocket is called for the socket, or until the extension associated + // with the socket is disabled/ reloaded. Returns an id for the socket. + int RegisterSocket(const std::string& extension_id, + scoped_refptr<device::BluetoothSocket> socket); + + // Release the BluetoothSocket corresponding to |id|. Returns true if + // the socket was found and released, false otherwise. + bool ReleaseSocket(int id); + // Add the BluetoothProfile |bluetooth_profile| for use by the extension // system. This class will hold onto the profile until RemoveProfile is // called for the profile, or until the extension that added the profile @@ -88,6 +99,16 @@ class BluetoothEventRouter : public device::BluetoothAdapter::Observer, // if the BluetoothProfile with |uuid| does not exist. device::BluetoothProfile* GetProfile(const device::BluetoothUUID& uuid) const; + // Get the BluetoothSocket corresponding to |id|. + scoped_refptr<device::BluetoothSocket> GetSocket(int id); + + // Dispatch an event that takes a connection socket as a parameter to the + // extension that registered the profile that the socket has connected to. + void DispatchConnectionEvent(const std::string& extension_id, + const device::BluetoothUUID& uuid, + const device::BluetoothDevice* device, + scoped_refptr<device::BluetoothSocket> socket); + // Called when a bluetooth event listener is added. void OnListenerAdded(); @@ -157,6 +178,14 @@ class BluetoothEventRouter : public device::BluetoothAdapter::Observer, 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. + int next_socket_id_; + + typedef std::map<int, ExtensionBluetoothSocketRecord> SocketMap; + SocketMap socket_map_; + // Maps uuids to a struct containing a Bluetooth profile and its // associated extension id. typedef std::map<device::BluetoothUUID, ExtensionBluetoothProfileRecord> |