'use strict'; promise_test(async (t) => { let iframe = document.createElement('iframe'); await new Promise(resolve => { iframe.src = '../resources/open-in-iframe.html'; iframe.sandbox.add('allow-scripts'); iframe.allow = 'usb'; document.body.appendChild(iframe); iframe.addEventListener('load', resolve); }); await new Promise(resolve => { window.addEventListener('message', t.step_func(messageEvent => { // The failure message of no device chosen is expected. The point here is // to validate not failing because of a sandboxed iframe. assert_equals( 'FAIL: NotFoundError: Failed to execute \'requestDevice\' on ' + '\'USB\': No device selected.', messageEvent.data); resolve(); })); iframe.contentWindow.postMessage('RequestDevice', '*'); }); }, 'RequestDevice from a sandboxed iframe is valid.');