| <!DOCTYPE html> |
| <script src="../resources/testharness.js"></script> |
| <script src="../resources/testharnessreport.js"></script> |
| <body></body> |
| <script> |
| 'use strict'; |
| |
| function createIframe(iframe) { |
| return new Promise(resolve => { |
| iframe.src = ''; |
| iframe.onload = () => { |
| resolve(iframe.contentWindow.navigator.usb); |
| }; |
| document.body.appendChild(iframe); |
| }); |
| } |
| |
| promise_test(async(t) => { |
| let iframe = document.createElement('iframe'); |
| let iframeUsbObject = await createIframe(iframe); |
| let devices = await iframeUsbObject.getDevices(); |
| assert_equals(devices.length, 0); |
| document.body.removeChild(iframe); |
| // Set iframe to null to ensure that the GC cleans up as much as possible. |
| iframe = null; |
| GCController.collect(); |
| return iframeUsbObject.getDevices() |
| .catch(err => assert_equals(err.name, 'NotSupportedError')); |
| }, 'detaching from iframe invalidates reference to the iframe USB object'); |
| </script> |