| 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>
|
| +<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>
|
|
|