Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(130)

Unified Diff: device/bluetooth/bluetooth_gatt_connection.h

Issue 1292263002: bluetooth: Create base class BluetoothDevice::CreateGattConnection impl. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@bt-adapter-
Patch Set: fix ProximityAuthBluetoothLowEnergyConnectionTest Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « device/bluetooth/bluetooth_device_win.cc ('k') | device/bluetooth/bluetooth_gatt_connection.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: device/bluetooth/bluetooth_gatt_connection.h
diff --git a/device/bluetooth/bluetooth_gatt_connection.h b/device/bluetooth/bluetooth_gatt_connection.h
index 1f90636ccc342ac1c33625ceb8c62f02d98482a2..ede1f3d0d1a63362ef8d1c68a0dd30d6c8faebc1 100644
--- a/device/bluetooth/bluetooth_gatt_connection.h
+++ b/device/bluetooth/bluetooth_gatt_connection.h
@@ -12,6 +12,9 @@
namespace device {
+class BluetoothAdapter;
+class BluetoothDevice;
+
// BluetoothGattConnection represents a GATT connection to a Bluetooth device
// that has GATT services. Instances are obtained from a BluetoothDevice,
// and the connection is kept alive as long as there is at least one
@@ -20,6 +23,9 @@ namespace device {
// operating system (e.g. due to user action).
class DEVICE_BLUETOOTH_EXPORT BluetoothGattConnection {
public:
+ BluetoothGattConnection(scoped_refptr<device::BluetoothAdapter> adapter,
+ const std::string& device_address);
+
// Destructor automatically closes this GATT connection. If this is the last
// remaining GATT connection and this results in a call to the OS, that call
// may not always succeed. Users can make an explicit call to
@@ -29,19 +35,36 @@ class DEVICE_BLUETOOTH_EXPORT BluetoothGattConnection {
// Returns the Bluetooth address of the device that this connection is open
// to.
- virtual std::string GetDeviceAddress() const = 0;
+ const std::string& GetDeviceAddress() const;
- // Returns true if this connection is open.
- virtual bool IsConnected() = 0;
+ // Returns true if this GATT connection is open.
+ virtual bool IsConnected();
// Disconnects this GATT connection. The device may still remain connected due
- // to other GATT connections.
- virtual void Disconnect() = 0;
+ // to other GATT connections. When all BluetoothGattConnection objects are
+ // disconnected the BluetoothDevice object will disconnect GATT.
+ virtual void Disconnect();
protected:
- BluetoothGattConnection();
+ friend BluetoothDevice; // For InvalidateConnectionReference.
+
+ // Sets this object to no longer have a reference maintaining the connection.
+ // Only to be called by BluetoothDevice to avoid reentrant code to
+ // RemoveGattConnection in that destructor after BluetoothDevice subclasses
+ // have already been destroyed.
+ void InvalidateConnectionReference();
+
+ // The Bluetooth adapter that this connection is associated with. A reference
+ // is held because BluetoothGattConnection keeps the connection alive.
+ scoped_refptr<BluetoothAdapter> adapter_;
+
+ // Bluetooth address of the underlying device.
+ std::string device_address_;
+ BluetoothDevice* device_ = nullptr;
private:
+ bool owns_reference_for_connection_ = false;
+
DISALLOW_COPY_AND_ASSIGN(BluetoothGattConnection);
};
« no previous file with comments | « device/bluetooth/bluetooth_device_win.cc ('k') | device/bluetooth/bluetooth_gatt_connection.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698