blob: fb052f148e9f95cbe9922ada97127dff1fa27d78 [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';
let test_desc = 'If a site disconnects from a device while the platform is ' +
'disconnecting that device, only one gattserverdisconnected event should ' +
'fire.';
let device, fake_peripheral;
let num_events = 0;
bluetooth_test(() => getHealthThermometerDevice()
.then(_ => ({device, fake_peripheral} = _))
// 1. Listen for disconnections.
.then(() =>
device.addEventListener('gattserverdisconnected', () => num_events++))
// 2. Disconnect several times.
.then(() => Promise.all([
eventPromise(device, 'gattserverdisconnected'),
fake_peripheral.simulateGATTDisconnection(),
device.gatt.disconnect(),
device.gatt.disconnect(),
]))
// 3. Wait to catch disconnect events.
.then(() => new Promise(resolve => step_timeout(resolve, 50)))
// 4. Ensure there is exactly 1 disconnection recorded.
.then(() => assert_equals(num_events, 1)), test_desc);
</script>