| Index: third_party/WebKit/LayoutTests/bluetooth/requestDevice.html
|
| diff --git a/third_party/WebKit/LayoutTests/bluetooth/requestDevice.html b/third_party/WebKit/LayoutTests/bluetooth/requestDevice.html
|
| index 243d422b9a6f8b28ed36f01203f6431517503777..0f0456bb20bac55474138c61656a562a914f87eb 100644
|
| --- a/third_party/WebKit/LayoutTests/bluetooth/requestDevice.html
|
| +++ b/third_party/WebKit/LayoutTests/bluetooth/requestDevice.html
|
| @@ -10,10 +10,11 @@ test(t => { assert_true(window.testRunner instanceof Object); t.done(); },
|
| 'window.testRunner is required for the following tests.');
|
|
|
| promise_test(() => {
|
| - testRunner.setBluetoothMockDataSet('FailStartDiscoveryAdapter');
|
| - testRunner.setBluetoothManualChooser();
|
| + testRunner.setBluetoothManualChooser(true);
|
| let requestDevicePromise =
|
| - requestDeviceWithKeyDown({filters: [{services: ['generic_access']}]});
|
| + setBluetoothFakeAdapter('FailStartDiscoveryAdapter')
|
| + .then(() => requestDeviceWithKeyDown({
|
| + filters: [{services: ['generic_access']}]}));
|
| return getBluetoothManualChooserEvents(3)
|
| .then(events => {
|
| assert_array_equals(events,
|
| @@ -31,18 +32,19 @@ promise_test(() => {
|
| }, 'Discovery session fails to start.');
|
|
|
| promise_test(() => {
|
| - testRunner.setBluetoothMockDataSet('NotPresentAdapter');
|
| - return assert_promise_rejects_with_message(
|
| - requestDeviceWithKeyDown({filters: [{services: ['generic_access']}]}),
|
| - new DOMException('Bluetooth adapter not available.', 'NotFoundError'),
|
| - 'Bluetooth adapter is not present.');
|
| + return setBluetoothFakeAdapter('NotPresentAdapter')
|
| + .then(() => assert_promise_rejects_with_message(
|
| + requestDeviceWithKeyDown({filters: [{services: ['generic_access']}]}),
|
| + new DOMException('Bluetooth adapter not available.', 'NotFoundError'),
|
| + 'Bluetooth adapter is not present.'));
|
| }, 'Reject with NotFoundError if the adapter is not present.');
|
|
|
| promise_test(() => {
|
| - testRunner.setBluetoothMockDataSet('NotPoweredAdapter');
|
| - testRunner.setBluetoothManualChooser();
|
| + testRunner.setBluetoothManualChooser(true);
|
| let requestDevicePromise =
|
| - requestDeviceWithKeyDown({filters: [{services: ['generic_access']}]});
|
| + setBluetoothFakeAdapter('NotPoweredAdapter')
|
| + .then(() => requestDeviceWithKeyDown({
|
| + filters: [{services: ['generic_access']}]}));
|
| return getBluetoothManualChooserEvents(2)
|
| .then(events => {
|
| assert_array_equals(events,
|
| @@ -59,21 +61,21 @@ promise_test(() => {
|
| }, 'Reject with NotFoundError if the adapter is off.');
|
|
|
| promise_test(() => {
|
| - testRunner.setBluetoothMockDataSet('EmptyAdapter');
|
| - return assert_promise_rejects_with_message(
|
| - requestDeviceWithKeyDown({filters: [{services: ['generic_access']}]}),
|
| - new DOMException('User cancelled the requestDevice() chooser.',
|
| - 'NotFoundError'),
|
| - 'No Bluetooth devices in range.');
|
| + return setBluetoothFakeAdapter('EmptyAdapter')
|
| + .then(() => assert_promise_rejects_with_message(
|
| + requestDeviceWithKeyDown({filters: [{services: ['generic_access']}]}),
|
| + new DOMException('User cancelled the requestDevice() chooser.',
|
| + 'NotFoundError'),
|
| + 'No Bluetooth devices in range.'));
|
| }, 'Reject with NotFoundError if there are no devices around.');
|
|
|
| promise_test(() => {
|
| - testRunner.setBluetoothMockDataSet('HeartRateAdapter');
|
| - return Promise.all([
|
| - requestDeviceWithKeyDown({filters: [{services: [heart_rate.alias]}]}),
|
| - requestDeviceWithKeyDown({filters: [{services: [heart_rate.name]}]}),
|
| - requestDeviceWithKeyDown({filters: [{services: [heart_rate.uuid]}]})
|
| - ]).then(devices => {
|
| + return setBluetoothFakeAdapter('HeartRateAdapter')
|
| + .then(() => Promise.all([
|
| + requestDeviceWithKeyDown({filters: [{services: [heart_rate.alias]}]}),
|
| + requestDeviceWithKeyDown({filters: [{services: [heart_rate.name]}]}),
|
| + requestDeviceWithKeyDown({filters: [{services: [heart_rate.uuid]}]})
|
| + ])).then(devices => {
|
| devices.forEach(device => {
|
| assert_equals(device.constructor.name, 'BluetoothDevice');
|
| });
|
| @@ -81,31 +83,35 @@ promise_test(() => {
|
| }, 'Mock will resolve.');
|
|
|
| promise_test(() => {
|
| - testRunner.setBluetoothMockDataSet('HeartRateAdapter');
|
| - return assert_promise_rejects(
|
| - navigator.bluetooth.requestDevice({filters: [{services: ['heart_rate']}]}),
|
| - new DOMException('', 'SecurityError'));
|
| + return setBluetoothFakeAdapter('HeartRateAdapter')
|
| + .then(() => assert_promise_rejects(
|
| + navigator.bluetooth.requestDevice({
|
| + filters: [{services: ['heart_rate']}]}),
|
| + new DOMException('', 'SecurityError')));
|
| }, 'Requires a user gesture.');
|
|
|
| promise_test(() => {
|
| - testRunner.setBluetoothMockDataSet('HeartRateAdapter');
|
| - return callWithKeyDown(() => {
|
| - var first = navigator.bluetooth.requestDevice({filters: [{services: ['heart_rate']}]});
|
| - var second = navigator.bluetooth.requestDevice({filters: [{services: ['heart_rate']}]});
|
| - return Promise.all([
|
| - first.then(device => assert_equals(device.constructor.name, 'BluetoothDevice')),
|
| - assert_promise_rejects(second, new DOMException('', 'SecurityError')),
|
| - ]);
|
| - });
|
| + return setBluetoothFakeAdapter('HeartRateAdapter')
|
| + .then(() => callWithKeyDown(() => {
|
| + var first = navigator.bluetooth.requestDevice({
|
| + filters: [{services: ['heart_rate']}]});
|
| + var second = navigator.bluetooth.requestDevice({
|
| + filters: [{services: ['heart_rate']}]});
|
| + return Promise.all([
|
| + first.then(device => assert_equals(
|
| + device.constructor.name, 'BluetoothDevice')),
|
| + assert_promise_rejects(second, new DOMException('', 'SecurityError')),
|
| + ]);
|
| + }));
|
| }, 'Consumes a user gesture.');
|
|
|
| promise_test(() => {
|
| - testRunner.setBluetoothMockDataSet('HeartRateAdapter');
|
| - return Promise.all([
|
| - requestDeviceWithKeyDown({filters: [{services: [heart_rate.alias]}]}),
|
| - requestDeviceWithKeyDown({filters: [{services: [heart_rate.name]}]}),
|
| - requestDeviceWithKeyDown({filters: [{services: [heart_rate.uuid]}]})
|
| - ]).then(devices => {
|
| + return setBluetoothFakeAdapter('HeartRateAdapter')
|
| + .then(() => Promise.all([
|
| + requestDeviceWithKeyDown({filters: [{services: [heart_rate.alias]}]}),
|
| + requestDeviceWithKeyDown({filters: [{services: [heart_rate.name]}]}),
|
| + requestDeviceWithKeyDown({filters: [{services: [heart_rate.uuid]}]})
|
| + ])).then(devices => {
|
| // requestDevice should return the same object if it was created
|
| // earlier. https://crbug.com/495270
|
| // TODO(ortuno): Change to assert_equals.
|
| @@ -115,27 +121,26 @@ promise_test(() => {
|
| }, 'Returned device should always be the same.');
|
|
|
| promise_test(() => {
|
| - testRunner.setBluetoothMockDataSet('ScanFilterCheckingAdapter');
|
| // The work of this test is done in the ScanFilterCheckingAdapter. It asserts
|
| // that this requestDevice() call tells the platform to scan for only devices
|
| // that include the Battery, Glucose, or Heart Rate services.
|
| - return requestDeviceWithKeyDown({
|
| - filters: [
|
| - {services: ['battery_service']},
|
| - {services: ['glucose', 'heart_rate']}
|
| - ],
|
| - // The optionalServices shouldn't affect the platform's scan.
|
| - optionalServices: ['generic_access']
|
| - });
|
| + return setBluetoothFakeAdapter('ScanFilterCheckingAdapter')
|
| + .then(() => requestDeviceWithKeyDown({
|
| + filters: [{services: ['battery_service']},
|
| + {services: ['glucose', 'heart_rate']}],
|
| + // The optionalServices shouldn't affect the platform's scan.
|
| + optionalServices: ['generic_access']
|
| + }));
|
| }, 'Filters restrict the platform\'s Bluetooth scan.');
|
|
|
| promise_test(() => {
|
| - testRunner.setBluetoothMockDataSet('GlucoseHeartRateAdapter');
|
| - testRunner.setBluetoothManualChooser();
|
| - let requestDevicePromise = requestDeviceWithKeyDown({
|
| - filters: [{services: ['glucose']},
|
| - {services: ['heart_rate']}]
|
| - });
|
| + testRunner.setBluetoothManualChooser(true);
|
| + let requestDevicePromise =
|
| + setBluetoothFakeAdapter('GlucoseHeartRateAdapter')
|
| + .then(() => requestDeviceWithKeyDown({
|
| + filters: [{services: ['glucose']},
|
| + {services: ['heart_rate']}]
|
| + }));
|
| return getBluetoothManualChooserEvents(5)
|
| .then(events => {
|
| assert_equals(events.length, 5, events);
|
| @@ -155,30 +160,32 @@ promise_test(() => {
|
| }, 'The chooser includes all devices.');
|
|
|
| promise_test(() => {
|
| - testRunner.setBluetoothMockDataSet('GlucoseHeartRateAdapter');
|
| - return requestDeviceWithKeyDown({filters: [{services: ['glucose']}]})
|
| + return setBluetoothFakeAdapter('GlucoseHeartRateAdapter')
|
| + .then(() => requestDeviceWithKeyDown({
|
| + filters: [{services: ['glucose']}]}))
|
| .then(device => assert_equals(device.name, 'Glucose Device'));
|
| }, 'Simple filter selects matching device.');
|
|
|
| promise_test(() => {
|
| - testRunner.setBluetoothMockDataSet('GlucoseHeartRateAdapter');
|
| - return requestDeviceWithKeyDown({
|
| - filters: [{services: ['glucose', 'tx_power']}]
|
| - }).then(device => assert_equals(device.name, 'Glucose Device'));
|
| + return setBluetoothFakeAdapter('GlucoseHeartRateAdapter')
|
| + .then(() => requestDeviceWithKeyDown({
|
| + filters: [{services: ['glucose', 'tx_power']}]
|
| + })).then(device => assert_equals(device.name, 'Glucose Device'));
|
| }, 'Filter with 2 services returns a matching device.');
|
|
|
| promise_test(() => {
|
| - testRunner.setBluetoothMockDataSet('GlucoseHeartRateAdapter');
|
| - return requestDeviceWithKeyDown({
|
| - filters: [{services: ['battery_service']},
|
| - {services: ['heart_rate']}]
|
| - }).then(device => assert_equals(device.name, 'Heart Rate Device'));
|
| + return setBluetoothFakeAdapter('GlucoseHeartRateAdapter')
|
| + .then(() => requestDeviceWithKeyDown({
|
| + filters: [{services: ['battery_service']},
|
| + {services: ['heart_rate']}]
|
| + })).then(device => assert_equals(device.name, 'Heart Rate Device'));
|
| }, 'An extra filter doesn\'t prevent matching.');
|
|
|
| promise_test(() => {
|
| - testRunner.setBluetoothMockDataSet('GlucoseHeartRateAdapter');
|
| - return requestDeviceWithKeyDown({filters: [{services: ['glucose']}],
|
| - optionalServices: ['tx_power']})
|
| + return setBluetoothFakeAdapter('GlucoseHeartRateAdapter')
|
| + .then(() => requestDeviceWithKeyDown({
|
| + filters: [{services: ['glucose']}],
|
| + optionalServices: ['tx_power']}))
|
| .then(device => {
|
| assert_equals(device.uuids.length, 2);
|
| assert_in_array(BluetoothUUID.getService('glucose'), device.uuids);
|
| @@ -188,23 +195,25 @@ promise_test(() => {
|
|
|
|
|
| promise_test(() => {
|
| - testRunner.setBluetoothMockDataSet('GlucoseHeartRateAdapter');
|
| // Both devices support the Generic Access service, but things need to
|
| // support both services to pass the filter, and neither has a Battery
|
| // service.
|
| - return assert_promise_rejects(requestDeviceWithKeyDown({
|
| + return setBluetoothFakeAdapter('GlucoseHeartRateAdapter')
|
| + .then(() => assert_promise_rejects(
|
| + requestDeviceWithKeyDown({
|
| filters: [{services: ['heart_rate', 'battery_service']}]
|
| - }), new DOMException('', 'NotFoundError'));
|
| + }), new DOMException('', 'NotFoundError')));
|
| }, 'Too-strict filters do prevent matching.');
|
|
|
| promise_test(() => {
|
| - testRunner.setBluetoothMockDataSet('SecondDiscoveryFindsHeartRateAdapter');
|
| - testRunner.setBluetoothManualChooser();
|
| + testRunner.setBluetoothManualChooser(true);
|
|
|
| // Open the chooser, looking for a Heart Rate device.
|
| - let requestDevicePromise = requestDeviceWithKeyDown({
|
| - filters: [{services: ['heart_rate']}]
|
| - });
|
| + let requestDevicePromise =
|
| + setBluetoothFakeAdapter('SecondDiscoveryFindsHeartRateAdapter')
|
| + .then(() => requestDeviceWithKeyDown({
|
| + filters: [{services: ['heart_rate']}]
|
| + }));
|
|
|
| // The adapter finds nothing, so we just see discovery start and stop.
|
| return getBluetoothManualChooserEvents(3).then(events => {
|
|
|