iframe_websocket_sandbox.html (1785B)
1 <html><body> 2 <iframe id="frame" sandbox="allow-scripts allow-popups"></iframe> 3 <script type="application/javascript"> 4 /* eslint-disable no-useless-concat */ 5 6 onmessage = function(e) { 7 parent.postMessage(e.data, '*'); 8 } 9 10 var ifr = document.getElementById('frame'); 11 12 if (location.search == '?nested') { 13 let url = new URL(location); 14 url.search = ""; 15 ifr.src = url.href; 16 } else if (location.search == '?popup') { 17 let url = new URL(location); 18 url.search = "?opener"; 19 20 ifr.srcdoc = "<html><script>" + 21 "window.open('" + url.href + "', 'foobar');" + 22 "onmessage = function(e) { " + 23 " parent.postMessage(e.data, '*'); " + 24 "}" + 25 "</scr" + "ipt></html>"; 26 } else if (location.search == '?opener') { 27 try{ 28 var socket = new WebSocket('ws://mochi.test:8888/tests/dom/websocket/tests/file_websocket_basic'); 29 socket.onerror = function() { 30 opener.postMessage('WS onerror', '*'); 31 close(); 32 }; 33 socket.onopen = function() { 34 opener.postMessage('WS onopen', '*'); 35 close(); 36 }; 37 } catch(e) { 38 if (e.name == 'SecurityError') { 39 opener.postMessage('WS Throws!', '*'); 40 } else { 41 opener.postMessage('WS Throws something else!', '*'); 42 } 43 close(); 44 } 45 } else { 46 ifr.srcdoc = ` 47 <html><script> 48 try{ 49 var socket = new WebSocket('ws://mochi.test:8888/tests/dom/websocket/tests/file_websocket_basic'); 50 socket.onerror = function(e) { 51 parent.postMessage('WS onerror', '*'); 52 }; 53 socket.onopen = function(event) { 54 parent.postMessage('WS onopen', '*'); 55 }; 56 } catch(e) { 57 if (e.name == 'SecurityError') { 58 parent.postMessage('WS Throws!', '*'); 59 } else { 60 parent.postMessage('WS Throws something else!', '*'); 61 } 62 } 63 </scr`+`ipt> 64 </html>`; 65 } 66 </script> 67 </body></html>