Chromium Code Reviews| Index: third_party/WebKit/LayoutTests/bluetooth/requestDevice-canonicalize-filter.html |
| diff --git a/third_party/WebKit/LayoutTests/bluetooth/requestDevice-canonicalize-filter.html b/third_party/WebKit/LayoutTests/bluetooth/requestDevice-canonicalize-filter.html |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..3973ba98cf2d7008bc79ad9d80fce4add7bf3ed2 |
| --- /dev/null |
| +++ b/third_party/WebKit/LayoutTests/bluetooth/requestDevice-canonicalize-filter.html |
| @@ -0,0 +1,133 @@ |
| +<!DOCTYPE html> |
|
scheib
2015/10/22 04:58:42
You named this file because of the modules/bluetoo
ortuno
2015/10/22 16:21:31
The name comes from the spec algorithm to create a
|
| +<script src="../resources/testharness.js"></script> |
| +<script src="../resources/testharness-helpers.js"></script> |
| +<script src="../resources/testharnessreport.js"></script> |
| +<script src="resources/bluetooth-helpers.js"></script> |
| +<script> |
| +'use strict'; |
| + |
| +test(function(t) { assert_true(window.testRunner instanceof Object); t.done(); }, |
| + 'window.testRunner is required for the following tests.'); |
| + |
| +promise_test(() => { |
| + testRunner.setBluetoothMockDataSet('EmptyAdapter'); |
| + return assert_promise_rejects(requestDeviceWithKeyDown(), |
| + new TypeError()); |
| +}, 'Requires an argument.'); |
| + |
| +[{}, { |
| + optionalServices: ['wrong_service'] |
| +}].forEach(args => { |
| + promise_test(() => { |
| + testRunner.setBluetoothMockDataSet('EmptyAdapter'); |
| + return assert_promise_rejects(requestDeviceWithKeyDown(args), |
| + new TypeError()); |
| + }, 'RequestDeviceOptions requires a |filters| member.'); |
| +}); |
| + |
| +promise_test(() => { |
| + testRunner.setBluetoothMockDataSet('EmptyAdapter'); |
| + return assert_promise_rejects(requestDeviceWithKeyDown({ |
| + filters: [{}] |
| + }), new TypeError()); |
| +}, 'A filter must restrict the devices in some way.'); |
| + |
| +function generateRequestDeviceArgsWithServices(services) { |
| + services = (services === undefined) ? ['heart_rate'] : services; |
| + |
| + return [{ |
| + filters: [{ services: services}] |
| + }, { |
| + filters: [{ services: services, name: 'Name'}] |
| + }, { |
| + filters: [{ services: services, namePrefix: 'Pre'}] |
| + }, { |
| + filters: [{ services: services, name: 'Name', namePrefix: 'Pre'}] |
| + }, { |
| + filters: [{ services: services}], |
| + optionalServices: ['heart_rate'] |
| + }, { |
| + filters: [{ services: services, name: 'Name'}], |
| + optionalServices: ['heart_rate'] |
| + }, { |
| + filters: [{ services: services, namePrefix: 'Pre'}], |
| + optionalServices: ['heart_rate'] |
| + }, { |
| + filters: [{ services: services, name: 'Name', namePrefix: 'Pre'}], |
| + optionalServices: ['heart_rate'] |
| + }]; |
| +} |
| + |
| +generateRequestDeviceArgsWithServices([]).forEach(args => { |
| + promise_test(() => { |
| + testRunner.setBluetoothMockDataSet('EmptyAdapter'); |
| + return assert_promise_rejects(requestDeviceWithKeyDown(args), |
| + new TypeError()); |
| + }, 'Services member must contain at least one service.'); |
| +}); |
| + |
| +generateRequestDeviceArgsWithServices(['wrong_service']).forEach(args => { |
| + promise_test(() => { |
| + testRunner.setBluetoothMockDataSet('EmptyAdapter'); |
| + return assert_promise_rejects(requestDeviceWithKeyDown(args), |
| + new SyntaxError()); |
| + }, 'Invalid service must reject the promise.'); |
| +}); |
| + |
| +[{ |
| + filters: [{ namePrefix: ''}] |
| +}, { |
| + filters: [{ namePrefix: '', name: 'Name'}] |
| +}, { |
| + filters: [{ namePrefix: '', services: ['heart_rate']}] |
| +}, { |
| + filters: [{ namePrefix: '', name: 'Name', services: ['heart_rate']}] |
| +}, { |
| + filters: [{ namePrefix: ''}], |
| + optionalServices: ['heart_rate'] |
| +}, { |
| + filters: [{ namePrefix: '', name: 'Name'}], |
| + optionalServices: ['heart_rate'] |
| +}, { |
| + filters: [{ namePrefix: '', services: ['heart_rate']}], |
| + optionalServices: ['heart_rate'] |
| +}, { |
| + filters: [{ namePrefix: '', name: 'Name', services: ['heart_rate']}], |
| + optionalServices: ['heart_rate'] |
| +}].forEach(args => { |
| + promise_test(() => { |
| + testRunner.setBluetoothMockDataSet('EmptyAdapter'); |
| + return assert_promise_rejects(requestDeviceWithKeyDown(args), |
| + new TypeError()); |
| + }, 'A filter must restrict the devices in some way.'); |
| +}); |
| + |
| +[{ |
| + optionalServices: ['wrong_service'], |
| + filters: [{services: ['heart_rate']}] |
| +}, { |
| + optionalServices: ['wrong_service'], |
| + filters: [{ services: ['heart_rate'], name: 'Name'}] |
| +}, { |
| + optionalServices: ['wrong_service'], |
| + filters: [{ services: ['heart_rate'], namePrefix: 'Pre'}] |
| +}, { |
| + optionalServices: ['wrong_service'], |
| + filters: [{ services: ['heart_rate'], name: 'Name', namePrefix: 'Pre'}] |
| +}, { |
| + optionalServices: ['wrong_service'], |
| + filters: [{ name: 'Name'}] |
| +}, { |
| + optionalServices: ['wrong_service'], |
| + filters: [{ name: 'Name', namePrefix: 'Pre'}] |
| +}, { |
| + optionalServices: ['wrong_service'], |
| + filters: [{ namePrefix: 'Pre'}] |
| +}].forEach(args => { |
| + promise_test(() => { |
| + testRunner.setBluetoothMockDataSet('EmptyAdapter'); |
| + return assert_promise_rejects(requestDeviceWithKeyDown(args), |
| + new SyntaxError()); |
| + }, 'Invalid optional service must reject the promise.'); |
| +}); |
| +</script> |