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

Unified Diff: LayoutTests/bluetooth/requestDevice.html

Issue 1304353004: Test that the right events are sent to the Bluetooth chooser. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@pinned
Patch Set: Give expected_count a default. Created 5 years, 3 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
« no previous file with comments | « no previous file | LayoutTests/bluetooth/resources/bluetooth-helpers.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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.');
« no previous file with comments | « no previous file | LayoutTests/bluetooth/resources/bluetooth-helpers.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698