| 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.');
|
|
|