Chromium Code Reviews| Index: content/shell/browser/layout_test/layout_test_bluetooth_adapter_provider.cc |
| diff --git a/content/shell/browser/layout_test/layout_test_bluetooth_adapter_provider.cc b/content/shell/browser/layout_test/layout_test_bluetooth_adapter_provider.cc |
| index ed27741c8ed65c300f2509115ed2d37be6dbfe8a..15c75040246e50b6b6a7a8077b648ba010aa3d72 100644 |
| --- a/content/shell/browser/layout_test/layout_test_bluetooth_adapter_provider.cc |
| +++ b/content/shell/browser/layout_test/layout_test_bluetooth_adapter_provider.cc |
| @@ -17,10 +17,12 @@ |
| #include "device/bluetooth/test/mock_bluetooth_adapter.h" |
| #include "device/bluetooth/test/mock_bluetooth_discovery_session.h" |
| #include "device/bluetooth/test/mock_bluetooth_gatt_connection.h" |
| +#include "device/bluetooth/test/mock_bluetooth_gatt_notify_session.h" |
| #include "testing/gmock/include/gmock/gmock.h" |
| using device::BluetoothAdapter; |
| using device::BluetoothDevice; |
| +using device::BluetoothGattCharacteristic; |
| using device::BluetoothGattService; |
| using device::BluetoothUUID; |
| using device::MockBluetoothAdapter; |
| @@ -28,6 +30,7 @@ using device::MockBluetoothDevice; |
| using device::MockBluetoothDiscoverySession; |
| using device::MockBluetoothGattCharacteristic; |
| using device::MockBluetoothGattConnection; |
| +using device::MockBluetoothGattNotifySession; |
| using device::MockBluetoothGattService; |
| using testing::ElementsAre; |
| using testing::Invoke; |
| @@ -45,6 +48,8 @@ typedef testing::NiceMock<MockBluetoothGattConnection> |
| NiceMockBluetoothGattConnection; |
| typedef testing::NiceMock<MockBluetoothGattService> |
| NiceMockBluetoothGattService; |
| +typedef testing::NiceMock<MockBluetoothGattNotifySession> |
| + NiceMockBluetoothGattNotifySession; |
| namespace { |
| // Bluetooth UUIDs suitable to pass to BluetoothUUID(). |
| @@ -52,6 +57,7 @@ const char kBatteryServiceUUID[] = "180f"; |
| const char kGenericAccessServiceUUID[] = "1800"; |
| const char kGlucoseServiceUUID[] = "1808"; |
| const char kHeartRateServiceUUID[] = "180d"; |
| +const char kHeartRateMeasurementUUID[] = "2a37"; |
| const char kDeviceNameUUID[] = "2a00"; |
| // Invokes Run() on the k-th argument of the function with no arguments. |
| @@ -122,6 +128,8 @@ LayoutTestBluetoothAdapterProvider::GetBluetoothAdapter( |
| return GetMissingCharacteristicGenericAccessAdapter(); |
| else if (fake_adapter_name == "GenericAccessAdapter") |
| return GetGenericAccessAdapter(); |
| + else if (fake_adapter_name == "HeartRateAdapter") |
| + return GetHeartRateAdapter(); |
| else if (fake_adapter_name == "FailingConnectionsAdapter") |
| return GetFailingConnectionsAdapter(); |
| else if (fake_adapter_name == "FailingGATTOperationsAdapter") |
| @@ -353,6 +361,44 @@ LayoutTestBluetoothAdapterProvider::GetGenericAccessAdapter() { |
| // static |
| scoped_refptr<NiceMockBluetoothAdapter> |
| +LayoutTestBluetoothAdapterProvider::GetHeartRateAdapter() { |
| + scoped_refptr<NiceMockBluetoothAdapter> adapter(GetEmptyAdapter()); |
| + scoped_ptr<NiceMockBluetoothDevice> device(GetHeartRateDevice(adapter.get())); |
| + scoped_ptr<NiceMockBluetoothGattService> heart_rate( |
| + GetBaseGATTService(device.get(), kHeartRateServiceUUID)); |
| + |
| + // TODO(ortuno): Implement the rest of the service's characteristics |
| + // See: http://crbug.com/529975 |
| + scoped_ptr<NiceMockBluetoothGattCharacteristic> heart_rate_measurement( |
| + GetBaseGATTCharacteristic(heart_rate.get(), kHeartRateMeasurementUUID)); |
| + BluetoothGattCharacteristic* measurement_ptr = heart_rate_measurement.get(); |
| + ON_CALL(*heart_rate_measurement, StartNotifySession(_, _)) |
| + .WillByDefault( |
| + RunCallbackWithResult<0 /* success_callback */>([measurement_ptr]() { |
| + return GetBaseGATTNotifySession(measurement_ptr->GetIdentifier()); |
| + })); |
| + |
| + heart_rate->AddMockCharacteristic(heart_rate_measurement.Pass()); |
| + device->AddMockService(heart_rate.Pass()); |
| + adapter->AddMockDevice(device.Pass()); |
| + |
| + return adapter.Pass(); |
| +} |
| + |
| +// static |
| +scoped_ptr<NiceMockBluetoothGattNotifySession> |
| +LayoutTestBluetoothAdapterProvider::GetBaseGATTNotifySession( |
|
scheib
2015/10/01 22:05:23
After ::GetBaseGATTCharacteristic, http://google-s
ortuno
2015/10/03 04:03:04
Moved it after GetErrorCharacteristic since GetBas
|
| + const std::string& characteristic_identifier) { |
| + scoped_ptr<NiceMockBluetoothGattNotifySession> session( |
| + new NiceMockBluetoothGattNotifySession(characteristic_identifier)); |
| + |
| + ON_CALL(*session, Stop(_)).WillByDefault(RunCallback<0>()); |
| + |
| + return session.Pass(); |
| +} |
| + |
| +// static |
| +scoped_refptr<NiceMockBluetoothAdapter> |
| LayoutTestBluetoothAdapterProvider::GetFailingConnectionsAdapter() { |
| scoped_refptr<NiceMockBluetoothAdapter> adapter(GetEmptyAdapter()); |
| @@ -361,6 +407,7 @@ LayoutTestBluetoothAdapterProvider::GetFailingConnectionsAdapter() { |
| adapter->AddMockDevice(GetUnconnectableDevice( |
| adapter.get(), static_cast<BluetoothDevice::ConnectErrorCode>(error))); |
| } |
| + |
| return adapter.Pass(); |
| } |
| @@ -475,8 +522,8 @@ LayoutTestBluetoothAdapterProvider::GetHeartRateDevice( |
| uuids.push_back(BluetoothUUID(kGenericAccessServiceUUID)); |
| uuids.push_back(BluetoothUUID(kHeartRateServiceUUID)); |
| - return GetBaseDevice(adapter, "Heart Rate Device", uuids, |
| - makeMACAddress(0x3)); |
| + return GetConnectableDevice(adapter, "Heart Rate Device", uuids, |
| + makeMACAddress(0x3)); |
| } |
| // static |
| @@ -484,9 +531,10 @@ scoped_ptr<NiceMockBluetoothDevice> |
| LayoutTestBluetoothAdapterProvider::GetConnectableDevice( |
| device::MockBluetoothAdapter* adapter, |
| const std::string& device_name, |
| - BluetoothDevice::UUIDList uuids) { |
| + BluetoothDevice::UUIDList uuids, |
| + const std::string& address) { |
| scoped_ptr<NiceMockBluetoothDevice> device( |
| - GetBaseDevice(adapter, device_name, uuids)); |
| + GetBaseDevice(adapter, device_name, uuids, address)); |
| BluetoothDevice* device_ptr = device.get(); |
| @@ -581,6 +629,10 @@ LayoutTestBluetoothAdapterProvider::GetErrorCharacteristic( |
| ON_CALL(*characteristic, WriteRemoteCharacteristic(_, _, _)) |
| .WillByDefault(RunCallback<2 /* error_callback */>(error_code)); |
| + // StartNotifySession response |
| + ON_CALL(*characteristic, StartNotifySession(_, _)) |
| + .WillByDefault(RunCallback<1 /* error_callback */>(error_code)); |
| + |
| return characteristic.Pass(); |
| } |