Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

// META: script=/resources/testdriver.js
// META: script=/resources/testdriver-vendor.js
// META: script=/common/gc.js
// META: script=/bluetooth/resources/bluetooth-test.js
// META: script=/bluetooth/resources/bluetooth-fake-devices.js
'use strict';
const test_desc = 'A device disconnecting after the BluetoothDevice object ' +
'has been GC\'ed should not access freed memory.';
bluetooth_test(async () => {
let {fake_peripheral} = await getConnectedHealthThermometerDevice();
// 1. Disconnect.
await fake_peripheral.simulateGATTDisconnection();
// 2. Run garbage collection.
fake_peripheral = undefined;
await garbageCollect();
// 3. Wait 50ms after the GC runs for the disconnection event to come back.
// There's nothing to assert other than that only valid memory is used.
await new Promise(resolve => step_timeout(resolve, 50));
}, test_desc);