blob: 7b13e4bdb8f1b7acb6d9f13009c26f1713548460 [file] [log] [blame]
<!DOCTYPE html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../../resources/bluetooth/bluetooth-helpers.js"></script>
<script>
'use strict';
// The following tests make sure the Web Bluetooth implementation
// responds correctly to the different types of errors the
// underlying platform might throw.
// Each implementation maps these devices to specific code paths
// that result in different errors thus increasing code coverage
// when testing. Therefore some of these devices might not be useful
// for all implementations.
let connection_test_specs = [{
testName: 'Authentication canceled when connecting.',
uuid: errorUUID(0x0),
error: new DOMException('Authentication canceled.',
'NetworkError')
}, {
testName: 'Authentication failed when connecting.',
uuid: errorUUID(0x1),
error: new DOMException('Authentication failed.',
'NetworkError')
}, {
testName: 'Authentication rejected when connecting.',
uuid: errorUUID(0x2),
error: new DOMException('Authentication rejected.',
'NetworkError')
}, {
testName: 'Authentication timed out when connecting.',
uuid: errorUUID(0x3),
error: new DOMException('Authentication timeout.',
'NetworkError')
}, {
testName: 'Connection failed.',
uuid: errorUUID(0x4),
error: new DOMException('Connection failed for unknown reason.',
'NetworkError')
}, {
testName: 'Connection was already in progress.',
uuid: errorUUID(0x5),
error: new DOMException('Connection already in progress.',
'NetworkError')
}, {
testName: 'Unknown error when connnecting.',
uuid: errorUUID(0x6),
error: new DOMException('Unknown error when connecting to the device.',
'NetworkError')
}, {
testName: 'Tried to connect to an unsupported device.',
uuid: errorUUID(0x7),
error: new DOMException('Unsupported device.',
'NetworkError')
}];
bluetooth_test(() => {
return setBluetoothFakeAdapter('FailingConnectionsAdapter')
.then(() => {
let test_promises = Promise.resolve();
connection_test_specs.forEach(testSpec => {
test_promises = test_promises
.then(() => requestDeviceWithKeyDown({
filters: [{services: [testSpec.uuid]}]}))
.then(device => assert_promise_rejects_with_message(
device.gatt.connect(),
testSpec.error,
testSpec.testName));
});
return test_promises;
});
}, 'Adapter fails to connect to device. Should reject with the correct ' +
'exception.');
</script>