<!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(gattServer => gattServer.getPrimaryService('heart_rate'))
   .then(service => service.getCharacteristic('heart_rate_measurement'))
   .then(characteristic => Promise.all([
     characteristic.startNotifications(),
     characteristic.stopNotifications()]));
  // TODO(ortuno): Assert that notifications are not active.
  // http://crbug.com/600762
}, "Parallel start and stop.");
</script>
