Raw File
reconnect-during-disconnected-event.https.html
<!DOCTYPE html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<script src="/bluetooth/resources/bluetooth-helpers.js"></script>
<script>
'use strict';
let test_desc = 'A device that reconnects during the gattserverdisconnected ' +
    'event should still receive gattserverdisconnected events after ' +
    're-connection.';
let device, fake_peripheral;
bluetooth_test(() => getConnectedHealthThermometerDevice()
  .then(_ => ({device, fake_peripheral} = _))
  // 1. Disconnect.
  .then(() => new Promise(resolve => {
    fake_peripheral.simulateGATTDisconnection();
    device.addEventListener(
        'gattserverdisconnected', function onDisconnected() {
      device.removeEventListener('gattserverdisconnected', onDisconnected);
      // 2. Reconnect.
      fake_peripheral.setNextGATTConnectionResponse({
        code: HCI_SUCCESS,
      })
        .then(() => device.gatt.connect())
        .then(() => resolve());
    });
  }))
  // 3. Disconnect after reconnecting.
  .then(() => {
    fake_peripheral.simulateGATTDisconnection();
    return eventPromise(device, 'gattserverdisconnected')
  }), test_desc);
</script>
back to top