<html><body> <iframe id="frame" sandbox="allow-scripts allow-popups"></iframe> <script type="application/javascript"> onmessage = function(e) { parent.postMessage(e.data, '*'); } var ifr = document.getElementById('frame'); if (location.search == '?nested') { var url = new URL(location); url.search = ""; ifr.src = url.href; } else if (location.search == '?popup') { var url = new URL(location); url.search = "?opener"; ifr.srcdoc = "<html><script>" + "window.open('" + url.href + "', 'foobar');" + "onmessage = function(e) { " + " parent.postMessage(e.data, '*'); " + "}" + "</scr" + "ipt></html>"; } else if (location.search == '?opener') { try{ var socket = new WebSocket('ws://mochi.test:8888/tests/dom/websocket/tests/file_websocket_basic'); socket.onerror = function(e) { opener.postMessage('WS onerror', '*'); close(); }; socket.onopen = function(event) { opener.postMessage('WS onopen', '*'); close(); }; } catch(e) { if (e.name == 'SecurityError') { opener.postMessage('WS Throws!', '*'); } else { opener.postMessage('WS Throws something else!', '*'); } close(); } } else { ifr.srcdoc = ` <html><script> try{ var socket = new WebSocket('ws://mochi.test:8888/tests/dom/websocket/tests/file_websocket_basic'); socket.onerror = function(e) { parent.postMessage('WS onerror', '*'); }; socket.onopen = function(event) { parent.postMessage('WS onopen', '*'); }; } catch(e) { if (e.name == 'SecurityError') { parent.postMessage('WS Throws!', '*'); } else { parent.postMessage('WS Throws something else!', '*'); } } </scr`+`ipt> </html>`; } </script> </body></html>