Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

// META: script=/resources/testdriver.js
// META: script=/resources/testdriver-vendor.js
// META: script=/bluetooth/resources/bluetooth-test.js
// META: script=/bluetooth/resources/bluetooth-fake-devices.js
'use strict';
const test_desc = 'If a site disconnects from a device while the platform is ' +
'disconnecting that device, only one gattserverdisconnected event should ' +
'fire.';
bluetooth_test(async () => {
const {device, fake_peripheral} = await getConnectedHealthThermometerDevice();
let num_events = 0;
// 1. Listen for disconnections.
device.addEventListener('gattserverdisconnected', () => num_events++);
// 2. Disconnect several times.
await Promise.all([
eventPromise(device, 'gattserverdisconnected'),
fake_peripheral.simulateGATTDisconnection(),
device.gatt.disconnect(),
device.gatt.disconnect(),
]);
// 3. Wait to catch disconnect events.
await new Promise(resolve => step_timeout(resolve, 50));
// 4. Ensure there is exactly 1 disconnection recorded.
assert_equals(num_events, 1);
}, test_desc);