| <!DOCTYPE html> |
| <script src="../../../resources/testharness.js"></script> |
| <script src="../../../resources/testharnessreport.js"></script> |
| <script src="../../../resources/bluetooth/bluetooth-helpers.js"></script> |
| <body> |
| <script> |
| "use strict"; |
| async_test(test => { |
| window.onmessage = messageEvent => test.step(() => { |
| if (messageEvent.data === 'Ready') { |
| let iframe = document.querySelector('iframe'); |
| callWithKeyDown(() => { |
| iframe.contentWindow.postMessage('RequestAndConnect', '*'); |
| }); |
| } else if (messageEvent.data === 'Connected') { |
| let iframe = document.querySelector('iframe'); |
| // GC |
| runGarbageCollection().then(() => { |
| // Detach |
| iframe.remove(); |
| test.done(); |
| }); |
| } else { |
| assert_unreached('iframe sent invalid data: ' + messageEvent.data); |
| } |
| }); |
| setBluetoothFakeAdapter('HeartRateAdapter') |
| .then(() => { |
| let iframe = document.createElement('iframe'); |
| iframe.src = '../../../resources/bluetooth/heart-rate-iframe.html'; |
| document.body.appendChild(iframe); |
| }); |
| }, 'Garbage collect then detach frame. We shouldn\'t crash.'); |
| </script> |
| </body> |