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

Unified Diff: content/shell/browser/layout_test/layout_test_bluetooth_adapter_provider.cc

Issue 1334763002: bluetooth: Subscribe to notifications (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@bluetooth-origin
Patch Set: Fix global interface test Created 5 years, 2 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
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..bef2529e80af1376aedd1e5594d08f162d95c1f0 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,32 @@ 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_refptr<NiceMockBluetoothAdapter>
LayoutTestBluetoothAdapterProvider::GetFailingConnectionsAdapter() {
scoped_refptr<NiceMockBluetoothAdapter> adapter(GetEmptyAdapter());
@@ -361,6 +395,7 @@ LayoutTestBluetoothAdapterProvider::GetFailingConnectionsAdapter() {
adapter->AddMockDevice(GetUnconnectableDevice(
adapter.get(), static_cast<BluetoothDevice::ConnectErrorCode>(error)));
}
+
return adapter.Pass();
}
@@ -475,8 +510,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 +519,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,9 +617,27 @@ 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();
}
+// Notify sessions
+
+// static
+scoped_ptr<NiceMockBluetoothGattNotifySession>
+LayoutTestBluetoothAdapterProvider::GetBaseGATTNotifySession(
+ const std::string& characteristic_identifier) {
+ scoped_ptr<NiceMockBluetoothGattNotifySession> session(
+ new NiceMockBluetoothGattNotifySession(characteristic_identifier));
+
+ ON_CALL(*session, Stop(_)).WillByDefault(RunCallback<0>());
+
+ return session.Pass();
+}
+
// Helper functions
// static

Powered by Google App Engine
This is Rietveld 408576698