open-in-iframe.html (1548B)
1 <!DOCTYPE html> 2 <!-- Intentionally use relative paths here because this file is also used by blink/web_tests/usb/usbDevice-iframe.html. --> 3 <script src="../../resources/test-only-api.js"></script> 4 <script src="usb-helpers.js"></script> 5 <script src="/resources/testdriver.js"></script> 6 <script src="/resources/testdriver-vendor.js"></script> 7 8 <body> 9 <button>Fake user gesture</button> 10 </body> 11 12 <script> 13 'use strict'; 14 test_driver.set_test_context(parent); 15 window.onmessage = messageEvent => { 16 switch (messageEvent.data) { 17 case 'ConnectEvent': 18 navigator.usb.addEventListener('connect', connectEvent => { 19 connectEvent.device.open() 20 .then(() => parent.postMessage('Success', '*')) 21 .catch(err => 22 parent.postMessage(`FAIL: open rejected ${err}`, '*')); 23 }); 24 parent.postMessage('Ready', '*'); 25 break; 26 case 'GetDevices': 27 navigator.usb.getDevices() 28 .then(devices => parent.postMessage('Success', '*')) 29 .catch(err => parent.postMessage(`FAIL: ${err}`, '*')); 30 break; 31 case 'RequestDevice': 32 test_driver.click(document.getElementsByTagName('button')[0]) 33 .then(() => navigator.usb.requestDevice({filters: []})) 34 .then(device => parent.postMessage('Success', '*')) 35 .catch(err => parent.postMessage(`FAIL: ${err}`, '*')); 36 break; 37 default: 38 parent.postMessage( 39 `FAIL: Bad message type: ${messageEvent.data}`, '*'); 40 } 41 }; 42 </script>