Chromium Code Reviews| Index: LayoutTests/bluetooth/requestDevice.html |
| diff --git a/LayoutTests/bluetooth/requestDevice.html b/LayoutTests/bluetooth/requestDevice.html |
| index 834bc70756f228076fc087c42c09e290d99cef8e..5634e8861eca403609e25f798be55d09a0eb9496 100644 |
| --- a/LayoutTests/bluetooth/requestDevice.html |
| +++ b/LayoutTests/bluetooth/requestDevice.html |
| @@ -21,12 +21,18 @@ promise_test(() => { |
| new TypeError()); |
| }, 'RequestDeviceOptions requires a |filters| member.'); |
| -// TODO(jyasskin): Add a test that the chooser is informed of a failed discovery |
| -// session. |
| promise_test(() => { |
| testRunner.setBluetoothMockDataSet('FailStartDiscoveryAdapter'); |
| + testRunner.setBluetoothManualChooser(); |
| + let requestDevicePromise = |
| + requestDeviceWithKeyDown({filters: [{services: ['generic_access']}]}); |
| + assert_array_equals(testRunner.getBluetoothManualChooserEvents(), |
| + ['chooser-opened(file:///)', |
| + 'discovering', |
| + 'discovery-failed-to-start']); |
| + testRunner.sendBluetoothManualChooserEvent('cancelled', ''); |
| return assert_promise_rejects_with_message( |
| - requestDeviceWithKeyDown({filters: [{services: ['generic_access']}]}), |
| + requestDevicePromise, |
| {name: 'NotFoundError', message: 'User cancelled the requestDevice() chooser.'}, |
| 'The adapter failed to start a discovery session.'); |
| }, 'Discovery session fails to start.'); |
| @@ -39,18 +45,21 @@ promise_test(() => { |
| 'Bluetooth adapter is not present.'); |
| }, 'Reject with NotFoundError if the adapter is not present.'); |
| -// TODO(jyasskin): Add a test that the chooser is informed of a disabled |
| -// Bluetooth adapter. |
| promise_test(() => { |
| testRunner.setBluetoothMockDataSet('NotPoweredAdapter'); |
| + testRunner.setBluetoothManualChooser(); |
| + let requestDevicePromise = |
| + requestDeviceWithKeyDown({filters: [{services: ['generic_access']}]}); |
| + assert_array_equals(testRunner.getBluetoothManualChooserEvents(), |
| + ['chooser-opened(file:///)', |
| + 'adapter-disabled']); |
| + testRunner.sendBluetoothManualChooserEvent('cancelled', ''); |
| return assert_promise_rejects_with_message( |
| - requestDeviceWithKeyDown({filters: [{services: ['generic_access']}]}), |
| + requestDevicePromise, |
| {name: 'NotFoundError', message: 'User cancelled the requestDevice() chooser.'}, |
| 'Bluetooth adapter is not powered.'); |
| }, 'Reject with NotFoundError if the adapter is off.'); |
| -// TODO(jyasskin): Add a test that the chooser gets a full list of found |
| -// devices. |
| promise_test(() => { |
| testRunner.setBluetoothMockDataSet('EmptyAdapter'); |
| return assert_promise_rejects_with_message( |
| @@ -123,6 +132,38 @@ promise_test(() => { |
| promise_test(() => { |
| testRunner.setBluetoothMockDataSet('GlucoseHeartRateAdapter'); |
| + testRunner.setBluetoothManualChooser(); |
| + let requestDevicePromise = requestDeviceWithKeyDown({ |
| + filters: [{services: ['glucose']}, |
| + {services: ['heart_rate']}] |
| + }); |
| + let deadline = Date.now() + 500; |
|
ortuno
2015/09/18 00:21:02
do we really need this? testharness will timeout t
Jeffrey Yasskin
2015/09/18 01:27:44
I guess we can do without it.
|
| + let events = testRunner.getBluetoothManualChooserEvents(); |
| + while (events.length < 5 && Date.now() < deadline) { |
| + Array.prototype.push.apply(events, |
|
ortuno
2015/09/18 00:21:02
Array spreads! :p
Jeffrey Yasskin
2015/09/18 01:27:44
Done. :)
|
| + testRunner.getBluetoothManualChooserEvents()); |
| + } |
| + assert_equals(events.length, 5, events); |
| + assert_equals(events[0], 'chooser-opened(file:///)', 'events[0]'); |
| + let idsByName = new Map(); |
| + let addDeviceRegex = /^add-device\(([^)]+)\)=([0-9:]+)$/ |
|
ortuno
2015/09/18 00:21:02
Semicolon. I wish we had something like jshint to
Jeffrey Yasskin
2015/09/18 01:27:44
Done. I've also moved this to a class in resources
|
| + for (let addedDevice of [events[1], events[2]]) { |
| + let device = addDeviceRegex.exec(addedDevice); |
|
ortuno
2015/09/18 00:21:02
What about:
assert_regexp_match(events[1], GetReg
Jeffrey Yasskin
2015/09/18 01:27:44
If we get live devices working, the order of these
ortuno
2015/09/18 19:56:20
Ahh good point.
|
| + assert_true(!!device, addedDevice); |
| + idsByName.set(device[1], device[2]); |
| + } |
| + assert_true(idsByName.has('Heart Rate Device')); |
| + assert_true(idsByName.has('Glucose Device')); |
| + assert_equals(events[3], 'discovering'); |
| + assert_equals(events[4], 'discovery-idle'); |
| + testRunner.sendBluetoothManualChooserEvent('selected', |
| + idsByName.get('Glucose Device')); |
| + return requestDevicePromise |
| + .then(device => assert_equals(device.name, 'Glucose Device')); |
| +}, 'The chooser includes all devices.'); |
| + |
| +promise_test(() => { |
| + testRunner.setBluetoothMockDataSet('GlucoseHeartRateAdapter'); |
| return requestDeviceWithKeyDown({filters: [{services: ['glucose']}]}) |
| .then(device => assert_equals(device.name, 'Glucose Device')); |
| }, 'Simple filter selects matching device.'); |