<!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';
promise_test(() => {
  return setBluetoothFakeAdapter('HeartRateAdapter')
    .then(() => requestDeviceWithKeyDown({
      filters: [{services: ['heart_rate']}]}))
    .then(device => device.gatt.connect())
    .then(gattService => gattService.getPrimaryService('heart_rate'))
    .then(service => service.getCharacteristic('heart_rate_measurement'))
    .then(characteristic => {
      return setBluetoothFakeAdapter('MissingCharacteristicHeartRateAdapter')
        .then(() => assert_promise_rejects_with_message(
          characteristic.startNotifications(),
          new DOMException('GATT Characteristic no longer exists.',
                           'InvalidStateError'),
          'Characteristic got removed.'));
    });
}, 'Characteristic is removed. Reject with InvalidStateError.');
</script>
