OLD | NEW |
(Empty) | |
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #ifndef DEVICE_BLUETOOTH_TEST_FAKE_BLUETOOTH_H_ |
| 6 #define DEVICE_BLUETOOTH_TEST_FAKE_BLUETOOTH_H_ |
| 7 |
| 8 #include <memory> |
| 9 #include <string> |
| 10 |
| 11 #include "device/bluetooth/bluetooth_adapter.h" |
| 12 #include "device/bluetooth/bluetooth_remote_gatt_characteristic.h" |
| 13 #include "device/bluetooth/bluetooth_remote_gatt_descriptor.h" |
| 14 #include "device/bluetooth/bluetooth_export.h" |
| 15 #include "device/bluetooth/bluetooth_uuid.h" |
| 16 #include "device/bluetooth/public/interfaces/fake_bluetooth.mojom.h" |
| 17 #include "mojo/public/cpp/bindings/binding.h" |
| 18 |
| 19 namespace bluetooth { |
| 20 |
| 21 class DEVICE_BLUETOOTH_EXPORT FakeBluetooth : public mojom::FakeBluetooth { |
| 22 public: |
| 23 FakeBluetooth(); |
| 24 ~FakeBluetooth() override; |
| 25 |
| 26 static void Create(mojom::FakeBluetoothRequest request); |
| 27 |
| 28 void SetLEAvailability(bool available, |
| 29 const SetLEAvailabilityCallback& callback) override; |
| 30 void SimulateLECentralManager( |
| 31 mojom::FakeLECentralManagerOptionsPtr options, |
| 32 const SimulateLECentralManagerCallback& callback) override; |
| 33 }; |
| 34 |
| 35 class DEVICE_BLUETOOTH_EXPORT FakeLECentralManager |
| 36 : public mojom::FakeLECentralManager, |
| 37 device::BluetoothAdapter { |
| 38 public: |
| 39 FakeLECentralManager(mojom::FakeLECentralManagerOptionsPtr options, |
| 40 mojom::FakeLECentralManagerRequest request); |
| 41 |
| 42 // mojom::FakeLECentralManger overrides |
| 43 void SimulateAdvertisementReceived( |
| 44 mojom::ScanResultPtr result, |
| 45 const SimulateAdvertisementReceivedCallback& callback) override; |
| 46 void AddConnectedLEPeripheral( |
| 47 mojom::FakeLEPeripheralOptionsPtr options, |
| 48 const AddConnectedLEPeripheralCallback& callback) override; |
| 49 void SetState(mojom::FakeLECentralManagerState state, |
| 50 const SetStateCallback& callback) override; |
| 51 void GetStartScanCalls(const GetStartScanCallsCallback& callback) override; |
| 52 void GetStopScanCalls(const GetStopScanCallsCallback& callback) override; |
| 53 |
| 54 // device::BluetoothAdapter overrides |
| 55 std::string GetAddress() const override; |
| 56 std::string GetName() const override; |
| 57 void SetName( |
| 58 const std::string& name, |
| 59 const base::Closure& callback, |
| 60 const device::BluetoothAdapter::ErrorCallback& error_callback) override; |
| 61 bool IsInitialized() const override; |
| 62 bool IsPresent() const override; |
| 63 bool IsPowered() const override; |
| 64 void SetPowered( |
| 65 bool powered, |
| 66 const base::Closure& callback, |
| 67 const device::BluetoothAdapter::ErrorCallback& error_callback) override; |
| 68 bool IsDiscoverable() const override; |
| 69 void SetDiscoverable(bool discoverable, |
| 70 const base::Closure& callback, |
| 71 const ErrorCallback& error_callback) override; |
| 72 bool IsDiscovering() const override; |
| 73 device::BluetoothAdapter::UUIDList GetUUIDs() const override; |
| 74 void CreateRfcommService( |
| 75 const device::BluetoothUUID& uuid, |
| 76 const device::BluetoothAdapter::ServiceOptions& options, |
| 77 const device::BluetoothAdapter::CreateServiceCallback& callback, |
| 78 const device::BluetoothAdapter::CreateServiceErrorCallback& |
| 79 error_callback) override; |
| 80 void CreateL2capService( |
| 81 const device::BluetoothUUID& uuid, |
| 82 const device::BluetoothAdapter::ServiceOptions& options, |
| 83 const device::BluetoothAdapter::CreateServiceCallback& callback, |
| 84 const device::BluetoothAdapter::CreateServiceErrorCallback& |
| 85 error_callback) override; |
| 86 void SetAdvertisingInterval( |
| 87 const base::TimeDelta& min, |
| 88 const base::TimeDelta& max, |
| 89 const base::Closure& callback, |
| 90 const device::BluetoothAdapter::AdvertisementErrorCallback& |
| 91 error_callback) override; |
| 92 void RegisterAdvertisement( |
| 93 std::unique_ptr<device::BluetoothAdvertisement::Data> advertisement_data, |
| 94 const device::BluetoothAdapter::CreateAdvertisementCallback& callback, |
| 95 const device::BluetoothAdapter::AdvertisementErrorCallback& error_callback
) override; |
| 96 device::BluetoothLocalGattService* GetGattService( |
| 97 const std::string& identifier) const override; |
| 98 void AddDiscoverySession( |
| 99 device::BluetoothDiscoveryFilter* discovery_filter, |
| 100 const base::Closure& callback, |
| 101 const device::BluetoothAdapter::DiscoverySessionErrorCallback& |
| 102 error_callback) override; |
| 103 void RemoveDiscoverySession( |
| 104 device::BluetoothDiscoveryFilter* discovery_filter, |
| 105 const base::Closure& callback, |
| 106 const device::BluetoothAdapter::DiscoverySessionErrorCallback& |
| 107 error_callback) override; |
| 108 void SetDiscoveryFilter( |
| 109 std::unique_ptr<device::BluetoothDiscoveryFilter> |
| 110 discovery_filter, |
| 111 const base::Closure& callback, |
| 112 const device::BluetoothAdapter::DiscoverySessionErrorCallback& |
| 113 error_callback) override; |
| 114 void RemovePairingDelegateInternal( |
| 115 device::BluetoothDevice::PairingDelegate* pairing_delegate) override; |
| 116 |
| 117 private: |
| 118 ~FakeLECentralManager() override; |
| 119 |
| 120 mojom::FakeLECentralManagerState state_; |
| 121 mojo::Binding<mojom::FakeLECentralManager> binding_; |
| 122 |
| 123 size_t start_scan_calls_; |
| 124 size_t stop_scan_calls_; |
| 125 }; |
| 126 |
| 127 class DEVICE_BLUETOOTH_EXPORT FakeLEPeripheral |
| 128 : public mojom::FakeLEPeripheral , device::BluetoothDevice { |
| 129 public: |
| 130 explicit FakeLEPeripheral(const std::string& device_address); |
| 131 ~FakeLEPeripheral() override; |
| 132 |
| 133 void SimulateGATTConnection( |
| 134 mojom::GATTConnectionResult result, |
| 135 const SimulateGATTConnectionCallback& callback) override; |
| 136 void SimulateGATTDiscoveryComplete( |
| 137 const SimulateGATTDiscoveryCompleteCallback& callback) override; |
| 138 void SimulateGATTServicesChanged( |
| 139 const SimulateGATTServicesChangedCallback& callback) override; |
| 140 void AddFakeService(mojom::FakeRemoteGATTServiceOptionsPtr options, |
| 141 const AddFakeServiceCallback& callback) override; |
| 142 void GetConnectCalls(const GetConnectCallsCallback& callback) override; |
| 143 void GetDisconnectCalls(const GetDisconnectCallsCallback& callback) override; |
| 144 |
| 145 uint32_t GetBluetoothClass() const override; |
| 146 #if defined(OS_CHROMEOS) || defined(OS_LINUX) |
| 147 device::BluetoothTransport GetType() const override; |
| 148 #endif |
| 149 std::string GetIdentifier() const override; |
| 150 std::string GetAddress() const override; |
| 151 device::BluetoothDevice::VendorIDSource GetVendorIDSource() const override; |
| 152 uint16_t GetVendorID() const override; |
| 153 uint16_t GetProductID() const override; |
| 154 uint16_t GetDeviceID() const override; |
| 155 uint16_t GetAppearance() const override; |
| 156 base::Optional<std::string> GetName() const override; |
| 157 bool IsPaired() const override; |
| 158 bool IsConnected() const override; |
| 159 bool IsGattConnected() const override; |
| 160 bool IsConnectable() const override; |
| 161 bool IsConnecting() const override; |
| 162 bool ExpectingPinCode() const override; |
| 163 bool ExpectingPasskey() const override; |
| 164 bool ExpectingConfirmation() const override; |
| 165 void GetConnectionInfo(const device::BluetoothDevice::ConnectionInfoCallback&
callback) override; |
| 166 void Connect(device::BluetoothDevice::PairingDelegate* pairing_delegate, |
| 167 const base::Closure& callback, |
| 168 const device::BluetoothDevice::ConnectErrorCallback& error_callba
ck) override; |
| 169 void SetPinCode(const std::string& pincode) override; |
| 170 void SetPasskey(uint32_t passkey) override; |
| 171 void ConfirmPairing() override; |
| 172 void RejectPairing() override; |
| 173 void CancelPairing() override; |
| 174 void Disconnect(const base::Closure& callback, |
| 175 const device::BluetoothDevice::ErrorCallback& error_callback)
override; |
| 176 void Forget(const base::Closure& callback, |
| 177 const device::BluetoothDevice::ErrorCallback& error_callback) over
ride; |
| 178 void ConnectToService( |
| 179 const device::BluetoothUUID& uuid, |
| 180 const device::BluetoothDevice::ConnectToServiceCallback& callback, |
| 181 const device::BluetoothDevice::ConnectToServiceErrorCallback& error_callba
ck) override; |
| 182 void ConnectToServiceInsecurely( |
| 183 const device::BluetoothUUID& uuid, |
| 184 const device::BluetoothDevice::ConnectToServiceCallback& callback, |
| 185 const device::BluetoothDevice::ConnectToServiceErrorCallback& error_callback
) override; |
| 186 |
| 187 void CreateGattConnectionImpl() override; |
| 188 void DisconnectGatt() override; |
| 189 |
| 190 private: |
| 191 std::string address_; |
| 192 |
| 193 size_t connect_calls_; |
| 194 size_t disconnect_calls_; |
| 195 }; |
| 196 |
| 197 class DEVICE_BLUETOOTH_EXPORT FakeRemoteGATTService |
| 198 : public mojom::FakeRemoteGATTService, device::BluetoothRemoteGattService { |
| 199 public: |
| 200 explicit FakeRemoteGATTService( |
| 201 mojom::FakeRemoteGATTServiceOptionsPtr options); |
| 202 |
| 203 void AddFakeCharacteristic( |
| 204 mojom::FakeRemoteGATTCharacteristicOptionsPtr options, |
| 205 const AddFakeCharacteristicCallback& callback) override; |
| 206 void AddFakeIncludedService( |
| 207 mojom::FakeRemoteGATTServiceOptionsPtr options, |
| 208 const AddFakeIncludedServiceCallback& callback) override; |
| 209 |
| 210 std::string GetIdentifier() const override; |
| 211 device::BluetoothUUID GetUUID() const override; |
| 212 device::BluetoothDevice* GetDevice() const override; |
| 213 bool IsPrimary() const override; |
| 214 std::vector<device::BluetoothRemoteGattCharacteristic*> GetCharacteristics() c
onst override; |
| 215 std::vector<device::BluetoothRemoteGattService*> GetIncludedServices() const o
verride; |
| 216 device::BluetoothRemoteGattCharacteristic* GetCharacteristic(const std::string
& identifier) const override; |
| 217 |
| 218 private: |
| 219 std::string uuid_; |
| 220 }; |
| 221 |
| 222 class DEVICE_BLUETOOTH_EXPORT FakeRemoteGATTCharacteristic |
| 223 : public mojom::FakeRemoteGATTCharacteristic, device::BluetoothRemoteGattCha
racteristic { |
| 224 public: |
| 225 explicit FakeRemoteGATTCharacteristic( |
| 226 mojom::FakeRemoteGATTCharacteristicOptionsPtr options); |
| 227 ~FakeRemoteGATTCharacteristic() override; |
| 228 |
| 229 void SimulateRead(mojom::GATTOperationResult result, |
| 230 const base::Optional<std::vector<uint8_t>>& value, |
| 231 const SimulateReadCallback& callback) override; |
| 232 void SimulateWrite(mojom::GATTOperationResult result, |
| 233 const SimulateWriteCallback& callback) override; |
| 234 void SimulateNotificationsStarted( |
| 235 mojom::GATTOperationResult result, |
| 236 const SimulateNotificationsStartedCallback& callback) override; |
| 237 void SimulateNotificationsStopped( |
| 238 mojom::GATTOperationResult result, |
| 239 const SimulateNotificationsStoppedCallback& callback) override; |
| 240 void SimulateNotification( |
| 241 mojom::FakeNotificationOptionsPtr options, |
| 242 const SimulateNotificationCallback& callback) override; |
| 243 void AddFakeDescriptor(mojom::FakeRemoteGATTDescriptorOptionsPtr options, |
| 244 const AddFakeDescriptorCallback& callback) override; |
| 245 void GetReadCalls(const GetReadCallsCallback& callback) override; |
| 246 void GetWriteCalls(const GetWriteCallsCallback& callback) override; |
| 247 void GetStartNotificationsCalls( |
| 248 const GetStartNotificationsCallsCallback& callback) override; |
| 249 void GetStopNotificationsCalls( |
| 250 const GetStopNotificationsCallsCallback& callback) override; |
| 251 |
| 252 std::string GetIdentifier() const override; |
| 253 device::BluetoothUUID GetUUID() const override; |
| 254 device::BluetoothGattCharacteristic::Properties GetProperties() const override
; |
| 255 device::BluetoothRemoteGattCharacteristic::Permissions GetPermissions() const
override; |
| 256 const std::vector<uint8_t>& GetValue() const override; |
| 257 device::BluetoothRemoteGattService* GetService() const override; |
| 258 std::vector<device::BluetoothRemoteGattDescriptor*> GetDescriptors() const ove
rride; |
| 259 device::BluetoothRemoteGattDescriptor* GetDescriptor(const std::string& identi
fier) const override; |
| 260 void ReadRemoteCharacteristic(const device::BluetoothRemoteGattCharacteristic:
:ValueCallback& callback, |
| 261 const device::BluetoothRemoteGattCharacteristic:
:ErrorCallback& error_callback) override; |
| 262 void WriteRemoteCharacteristic(const std::vector<uint8_t>& value, |
| 263 const base::Closure& callback, |
| 264 const device::BluetoothRemoteGattCharacteristic
::ErrorCallback& error_callback) override; |
| 265 protected: |
| 266 void SubscribeToNotifications(device::BluetoothRemoteGattDescriptor* ccc_descr
iptor, |
| 267 const base::Closure& callback, |
| 268 const device::BluetoothRemoteGattCharacteristic:
:ErrorCallback& error_callback) override; |
| 269 void UnsubscribeFromNotifications( |
| 270 device::BluetoothRemoteGattDescriptor* ccc_descriptor, |
| 271 const base::Closure& callback, |
| 272 const device::BluetoothRemoteGattCharacteristic::ErrorCallback& error_call
back) override; |
| 273 |
| 274 private: |
| 275 std::vector<uint8_t> value_; |
| 276 |
| 277 std::string uuid_; |
| 278 int32_t permissions_; |
| 279 |
| 280 size_t read_calls_; |
| 281 size_t write_calls_; |
| 282 size_t start_notifications_calls_; |
| 283 size_t stop_notifications_calls_; |
| 284 }; |
| 285 |
| 286 class DEVICE_BLUETOOTH_EXPORT FakeRemoteGATTDescriptor |
| 287 : public mojom::FakeRemoteGATTDescriptor, device::BluetoothRemoteGattDescrip
tor{ |
| 288 public: |
| 289 explicit FakeRemoteGATTDescriptor( |
| 290 mojom::FakeRemoteGATTDescriptorOptionsPtr options); |
| 291 ~FakeRemoteGATTDescriptor() override; |
| 292 |
| 293 void SimulateRead(mojom::GATTOperationResult result, |
| 294 const base::Optional<std::vector<uint8_t>>& value, |
| 295 const SimulateReadCallback& callback) override; |
| 296 void SimulateWrite(mojom::GATTOperationResult result, |
| 297 const SimulateWriteCallback& callback) override; |
| 298 |
| 299 std::string GetIdentifier() const override; |
| 300 device::BluetoothUUID GetUUID() const override; |
| 301 device::BluetoothRemoteGattCharacteristic::Permissions GetPermissions() const
override; |
| 302 const std::vector<uint8_t>& GetValue() const override; |
| 303 device::BluetoothRemoteGattCharacteristic* GetCharacteristic() const override; |
| 304 void ReadRemoteDescriptor(const device::BluetoothRemoteGattCharacteristic::Val
ueCallback& callback, |
| 305 const device::BluetoothRemoteGattCharacteristic::Err
orCallback& error_callback) override; |
| 306 void WriteRemoteDescriptor(const std::vector<uint8_t>& new_value, |
| 307 const base::Closure& callback, |
| 308 const device::BluetoothRemoteGattCharacteristic::Er
rorCallback& error_callback) override; |
| 309 |
| 310 private: |
| 311 std::string uuid_; |
| 312 |
| 313 std::vector<uint8_t> value_; |
| 314 }; |
| 315 |
| 316 } // namespace bluetooth |
| 317 #endif |
OLD | NEW |