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

Unified Diff: third_party/WebKit/LayoutTests/resources/bluetooth/bluetooth-helpers.js

Issue 2874873003: bluetooth: Implement simulateGATTConnectionResponse() (Closed)
Patch Set: fix Created 3 years, 6 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: third_party/WebKit/LayoutTests/resources/bluetooth/bluetooth-helpers.js
diff --git a/third_party/WebKit/LayoutTests/resources/bluetooth/bluetooth-helpers.js b/third_party/WebKit/LayoutTests/resources/bluetooth/bluetooth-helpers.js
index 862950d4bc09b903b74308bbf76d7ffc4f3e1c17..aae8a9bcf9c521f45dc4ecadd4a50107cd320ded 100644
--- a/third_party/WebKit/LayoutTests/resources/bluetooth/bluetooth-helpers.js
+++ b/third_party/WebKit/LayoutTests/resources/bluetooth/bluetooth-helpers.js
@@ -1,5 +1,11 @@
'use strict';
+// HCI Error Codes. Used for simulateGATT[Dis]ConnectionResponse.
+// For a complete list of possible error codes see
+// BT 4.2 Vol 2 Part D 1.3 List Of Error Codes.
+const HCI_SUCCESS = 0x0000;
+const HCI_CONNECTION_TIMEOUT = 0x0008;
+
// Bluetooth UUID constants:
// Services:
var blocklist_test_service_uuid = "611c954a-263b-4f4a-aab6-01ddb953f985";
@@ -416,6 +422,8 @@ function generateRequestDeviceArgsWithServices(services = ['heart_rate']) {
}];
}
+// Simulates a pre-connected device with |address|, |name| and
+// |knownServiceUUIDs|.
function setUpPreconnectedDevice({
address = '00:00:00:00:00:00', name = 'LE Device', knownServiceUUIDs = []}) {
return navigator.bluetooth.test.simulateCentral({state: 'powered-on'})
@@ -426,6 +434,8 @@ function setUpPreconnectedDevice({
}));
}
+// Returns an array containing two FakePeripherals corresponding
+// to the simulated devices.
function setUpHealthThermometerAndHeartRateDevices() {
return navigator.bluetooth.test.simulateCentral({state: 'powered-on'})
.then(fake_central => Promise.all([
@@ -440,3 +450,35 @@ function setUpHealthThermometerAndHeartRateDevices() {
knownServiceUUIDs: ['generic_access', 'heart_rate'],
})]));
}
+
+// Returns a BluetoothDevice discovered using |options| and its
+// corresponding FakePeripheral.
+// The simulated device is called 'Health Thermometer' it has two known service
+// UUIDs: 'generic_access' and 'health_thermometer'. The device has been
+// connected to and its services have been discovered.
+// TODO(crbug.com/719816): Add services, characteristics and descriptors,
+// and discover all the attributes.
+function getHealthThermometerDevice(options) {
+ return getDiscoveredHealthThermometerDevice(options)
+ .then(([device, fake_peripheral]) => {
+ return fake_peripheral.setNextGATTConnectionResponse({code: HCI_SUCCESS})
+ .then(() => device.gatt.connect())
+ .then(gatt => [gatt.device, fake_peripheral]);
+ });
+}
+
+// Similar to getHealthThermometerDevice() except the device
+// is not connected and thus its services have not been
+// discovered.
+function getDiscoveredHealthThermometerDevice(
+ options = {filters: [{services: ['health_thermometer']}]}) {
+ return setUpPreconnectedDevice({
+ address: '09:09:09:09:09:09',
+ name: 'Health Thermometer',
+ knownServiceUUIDs: ['generic_access', 'health_thermometer'],
+ })
+ .then(fake_peripheral => {
+ return requestDeviceWithKeyDown(options)
+ .then(device => [device, fake_peripheral]);
+ });
+}

Powered by Google App Engine
This is Rietveld 408576698