Index: chrome/browser/chromeos/bluetooth/bluetooth_device.h |
diff --git a/chrome/browser/chromeos/bluetooth/bluetooth_device.h b/chrome/browser/chromeos/bluetooth/bluetooth_device.h |
index 7c27ba2f68287ece0c9168fa9762c9ae3a040b3b..8e16a0aaa9f14d8aeb44b66502b79bcdfa732ac8 100644 |
--- a/chrome/browser/chromeos/bluetooth/bluetooth_device.h |
+++ b/chrome/browser/chromeos/bluetooth/bluetooth_device.h |
@@ -12,6 +12,7 @@ |
#include "base/basictypes.h" |
#include "base/callback.h" |
#include "base/memory/scoped_ptr.h" |
+#include "base/memory/weak_ptr.h" |
#include "base/string16.h" |
#include "chromeos/dbus/bluetooth_agent_service_provider.h" |
#include "chromeos/dbus/bluetooth_device_client.h" |
@@ -20,6 +21,7 @@ |
namespace chromeos { |
class BluetoothAdapter; |
+class BluetoothSocket; |
// The BluetoothDevice class represents a remote Bluetooth device, both |
// its properties and capabilities as discovered by a local adapter and |
@@ -249,6 +251,20 @@ class BluetoothDevice : private BluetoothDeviceClient::Observer, |
// have been deleted. If the request fails, |error_callback| will be called. |
void Forget(ErrorCallback error_callback); |
+ // SocketCallback is used by ConnectToService to return a BluetoothSocket |
+ // to the caller, or NULL if there was an error. The socket will remain open |
+ // until the last reference to the returned BluetoothSocket is released. |
+ typedef base::Callback<void(scoped_refptr<BluetoothSocket>)> SocketCallback; |
+ |
+ // Attempts to open a socket to a service matching |uuid| on this device. If |
+ // the connection is successful, |callback| is called with a BluetoothSocket. |
+ // Otherwise |callback| is called with NULL. The socket is closed as soon as |
+ // all references to the BluetoothSocket are released. Note that the |
+ // BluetoothSocket object can outlive both this BluetoothDevice and the |
+ // BluetoothAdapter for this device. |
+ void ConnectToService(const std::string& service_uuid, |
+ SocketCallback callback); |
+ |
private: |
friend class BluetoothAdapter; |
@@ -327,6 +343,17 @@ class BluetoothDevice : private BluetoothDeviceClient::Observer, |
const BluetoothDeviceClient::ServiceMap& service_map, |
bool success); |
+ // Called by BluetoothDeviceClient when a call to DiscoverServices() that was |
+ // initated from ConnectToService completes. The |callback| is called with |
+ // true iff a connection was successfully established. The rest of the |
+ // parameters are as documented for a BluetoothDeviceClient::ServicesCallback. |
+ void ConnectToMatchingService( |
+ const std::string& service_uuid, |
+ SocketCallback callback, |
+ const dbus::ObjectPath& object_path, |
+ const BluetoothDeviceClient::ServiceMap& service_map, |
+ bool success); |
+ |
// BluetoothDeviceClient::Observer override. |
// |
// Called when the device with object path |object_path| is about |