Index: LayoutTests/bluetooth/requestDevice.html |
diff --git a/LayoutTests/bluetooth/requestDevice.html b/LayoutTests/bluetooth/requestDevice.html |
index 834bc70756f228076fc087c42c09e290d99cef8e..efd10a41f8c48974a0c71fe64f36ebe6332b0641 100644 |
--- a/LayoutTests/bluetooth/requestDevice.html |
+++ b/LayoutTests/bluetooth/requestDevice.html |
@@ -21,14 +21,23 @@ 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'); |
- return assert_promise_rejects_with_message( |
- requestDeviceWithKeyDown({filters: [{services: ['generic_access']}]}), |
- {name: 'NotFoundError', message: 'User cancelled the requestDevice() chooser.'}, |
- 'The adapter failed to start a discovery session.'); |
+ testRunner.setBluetoothManualChooser(); |
+ let requestDevicePromise = |
+ requestDeviceWithKeyDown({filters: [{services: ['generic_access']}]}); |
+ return getBluetoothManualChooserEvents() |
+ .then(events => { |
+ assert_array_equals(events, |
+ ['chooser-opened(file:///)', |
+ 'discovering', |
+ 'discovery-failed-to-start']); |
+ testRunner.sendBluetoothManualChooserEvent('cancelled', ''); |
+ return assert_promise_rejects_with_message( |
+ requestDevicePromise, |
+ {name: 'NotFoundError', message: 'User cancelled the requestDevice() chooser.'}, |
+ 'The adapter failed to start a discovery session.'); |
+ }); |
}, 'Discovery session fails to start.'); |
promise_test(() => { |
@@ -39,18 +48,24 @@ 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'); |
- return assert_promise_rejects_with_message( |
- requestDeviceWithKeyDown({filters: [{services: ['generic_access']}]}), |
- {name: 'NotFoundError', message: 'User cancelled the requestDevice() chooser.'}, |
- 'Bluetooth adapter is not powered.'); |
+ testRunner.setBluetoothManualChooser(); |
+ let requestDevicePromise = |
+ requestDeviceWithKeyDown({filters: [{services: ['generic_access']}]}); |
+ return getBluetoothManualChooserEvents() |
+ .then(events => { |
+ assert_array_equals(events, |
+ ['chooser-opened(file:///)', |
+ 'adapter-disabled']); |
+ testRunner.sendBluetoothManualChooserEvent('cancelled', ''); |
+ return assert_promise_rejects_with_message( |
+ 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 +138,31 @@ promise_test(() => { |
promise_test(() => { |
testRunner.setBluetoothMockDataSet('GlucoseHeartRateAdapter'); |
+ testRunner.setBluetoothManualChooser(); |
+ let requestDevicePromise = requestDeviceWithKeyDown({ |
+ filters: [{services: ['glucose']}, |
+ {services: ['heart_rate']}] |
+ }); |
+ return getBluetoothManualChooserEvents(5) |
+ .then(events => { |
+ assert_equals(events.length, 5, events); |
+ assert_equals(events[0], 'chooser-opened(file:///)', 'events[0]'); |
+ let idsByName = new AddDeviceEventSet(); |
+ for (let addedDevice of [events[1], events[2]]) { |
+ idsByName.assert_add_device_event(addedDevice); |
+ } |
+ 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.'); |