<!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';
bluetooth_test(() => {
  return setBluetoothFakeAdapter('HeartRateAdapter')
    .then(() => requestDeviceWithKeyDown({
      filters: [{services: ['heart_rate']}]}))
    .then(device => device.gatt.connect())
    .then(gattServer => gattServer.getPrimaryService('heart_rate'))
    .then(service => service.getCharacteristic('heart_rate_measurement'))
    .then(characteristic => {
      return characteristic.startNotifications()
        .then(() => new Promise(resolve => {
          let event_listener = () => {
            characteristic.removeEventListener(
              'characteristicvaluechanged', event_listener);
            resolve();
          };
          characteristic.addEventListener(
            'characteristicvaluechanged', event_listener);
        }));
    });
}, 'Registering after the promise resolves shouldn\'t result in events ' +
   'getting dropped.');
</script>
