summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/api/bluetooth/bluetooth_event_router.h
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/extensions/api/bluetooth/bluetooth_event_router.h')
-rw-r--r--chrome/browser/extensions/api/bluetooth/bluetooth_event_router.h29
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>