tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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>