// 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 = 'A device that reconnects during the ' + 'gattserverdisconnected event should still receive ' + 'gattserverdisconnected events after re-connection.'; bluetooth_test(async () => { const {device, fake_peripheral} = await getConnectedHealthThermometerDevice(); const reconnectPromise = new Promise(async (resolve) => { device.addEventListener('gattserverdisconnected', async () => { // 2. Reconnect. await fake_peripheral.setNextGATTConnectionResponse({ code: HCI_SUCCESS, }); await device.gatt.connect(); // 3. Disconnect after reconnecting. const disconnectPromise = eventPromise(device, 'gattserverdisconnected'); fake_peripheral.simulateGATTDisconnection(); resolve(disconnectPromise); }, {once: true}); }); // 1. Disconnect. await fake_peripheral.simulateGATTDisconnection(); await reconnectPromise; }, test_desc);