| <!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(() => { |
| let start_promise; |
| 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 => { |
| start_promise = characteristic.startNotifications(); |
| // We intentionally don't return the promise so that 'characteristic' goes |
| // out of scope while the request is still pending. |
| }) |
| .then(() => runGarbageCollection()) |
| .then(() => start_promise); |
| // TODO(ortuno): Assert that notifications are not active. |
| // http://crbug.com/600762 |
| // Objects will no longer get garbage collected once we implement the |
| // bluetooth tree. |
| // https://crbug.com/495270 |
| }, 'Object gets garbage collected while start request is pending. Make ' + |
| 'sure we don\' crash.'); |
| </script> |