Chromium Code Reviews| Index: device/bluetooth/device.h |
| diff --git a/device/bluetooth/device.h b/device/bluetooth/device.h |
| index c82439e6c283ecb6e851e466061bedf060a18420..2d4bf322c21db34fa4d20dcc23b20dac3b32c45b 100644 |
| --- a/device/bluetooth/device.h |
| +++ b/device/bluetooth/device.h |
| @@ -5,13 +5,18 @@ |
| #ifndef DEVICE_BLUETOOTH_DEVICE_H_ |
| #define DEVICE_BLUETOOTH_DEVICE_H_ |
| +#include <memory> |
| #include <string> |
| +#include <vector> |
| #include "base/macros.h" |
| #include "base/memory/ref_counted.h" |
| #include "device/bluetooth/bluetooth_adapter.h" |
| #include "device/bluetooth/bluetooth_device.h" |
| +#include "device/bluetooth/bluetooth_gatt_connection.h" |
| +#include "device/bluetooth/bluetooth_remote_gatt_service.h" |
| #include "device/bluetooth/public/interfaces/device.mojom.h" |
| +#include "mojo/public/cpp/bindings/binding.h" |
| namespace bluetooth { |
| @@ -19,26 +24,55 @@ namespace bluetooth { |
| // device/bluetooth/public/interfaces/device.mojom. |
| // It handles requests to interact with Bluetooth Device. |
| // Uses the platform abstraction of device/bluetooth. |
| -class Device : public mojom::Device { |
| +// Instances of this class are constructed by Adapter and are bound to their |
| +// MessagePipe and BluetoothGattConnection lifetimes. In the case where either |
| +// the MessagePipe or BluetoothGattConnection dies, the instance deletes itself. |
| +class Device : public mojom::Device, public device::BluetoothAdapter::Observer { |
| public: |
| - Device(const std::string& address, |
| - scoped_refptr<device::BluetoothAdapter> adapter); |
| + Device(scoped_refptr<device::BluetoothAdapter> adapter, |
| + std::unique_ptr<device::BluetoothGattConnection> connection, |
| + mojom::DeviceRequest request); |
| ~Device() override; |
| // Creates a mojom::DeviceInfo using info from the given |device|. |
| static mojom::DeviceInfoPtr ConstructDeviceInfoStruct( |
| const device::BluetoothDevice* device); |
| + // Returns the Mojo binding used by this instance to allow tests to check |
| + // the message pipe status. |
| + mojo::Binding<mojom::Device>* GetBindingForTesting(); |
|
dcheng
2016/11/15 07:24:02
The test can just check the other end of the pipe
mbrunson
2016/11/16 03:32:03
Done.
|
| + |
| + // BluetoothAdapter::Observer overrides: |
| + void DeviceChanged(device::BluetoothAdapter* adapter, |
| + device::BluetoothDevice* device) override; |
| + void GattServicesDiscovered(device::BluetoothAdapter* adapter, |
| + device::BluetoothDevice* device) override; |
| + |
| // mojom::Device overrides: |
| + void Disconnect() override; |
| void GetInfo(const GetInfoCallback& callback) override; |
| + void GetServices(const GetServicesCallback& callback) override; |
| private: |
| - // The address of the Bluetooth device. |
| - std::string address_; |
| + void GetServicesImpl(const GetServicesCallback& callback); |
| + |
| + mojom::ServiceInfoPtr ConstructServiceInfoStruct( |
| + const device::BluetoothRemoteGattService& service); |
| + |
| + const std::string& GetAddress(); |
| // The current BluetoothAdapter. |
| scoped_refptr<device::BluetoothAdapter> adapter_; |
| + // The GATT connection to this device. |
| + std::unique_ptr<device::BluetoothGattConnection> connection_; |
| + |
| + mojo::Binding<mojom::Device> binding_; |
| + |
| + // The services request queue which holds callbacks that are waiting for |
| + // services to be discovered for this device. |
| + std::vector<base::Closure> pending_services_requests_; |
| + |
| DISALLOW_COPY_AND_ASSIGN(Device); |
| }; |