<!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';
var device;
var server;
var numEvents = 0;
bluetooth_test(() => {
  return setBluetoothFakeAdapter('DisconnectingHealthThermometerAdapter')
    .then(() => requestDeviceWithKeyDown({
      filters: [{services: ['health_thermometer']}],
      optionalServices: [request_disconnection_service_uuid]
    }))
    .then(requestedDevice => {
      device = requestedDevice;
      return device.gatt.connect();
    })
    .then(gattServer => {
      server = gattServer;
      return get_request_disconnection(gattServer);
    })
    .then(requestDisconnection => {
      let eventCounter = () => { ++numEvents; };
      device.addEventListener('gattserverdisconnected', eventCounter);
      return Promise.all([requestDisconnection(), server.disconnect()]);
    })
    .then(() => assert_equals(numEvents, 1));
}, 'A device disconnects while the platform is disconnecting that device, ' +
   'only one gattserverdisconnected event should fire.');
</script>
