tor-browser

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

test_messageChannel_cloning.html (1842B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <!--
      4 https://bugzilla.mozilla.org/show_bug.cgi?id=677638
      5 -->
      6 <head>
      7  <meta charset="utf-8">
      8  <title>Test for Bug 677638 - port cloning</title>
      9  <script src="/tests/SimpleTest/SimpleTest.js"></script>
     10  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
     11 </head>
     12 <body>
     13 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=677638">Mozilla Bug 677638</a>
     14 <div id="content"></div>
     15 <pre id="test">
     16 </pre>
     17  <script type="application/javascript">
     18 
     19  // This test checks if MessagePorts can be shared with iframes
     20  function test_iframe() {
     21    window.addEventListener('message', receiveMessage);
     22    function receiveMessage(evt) {
     23      if (evt.data.status == 'OK') {
     24        ok(true, evt.data.message);
     25      } else if (evt.data.status == 'KO') {
     26        ok(false, evt.data.message);
     27      } else if (evt.data.status == 'FINISH') {
     28        ok (evt.data.port instanceof MessagePort, "Data contains a MessagePort");
     29        window.removeEventListener('message', receiveMessage);
     30        runTest();
     31      } else {
     32        ok(false, "Unknown message");
     33      }
     34    }
     35 
     36    var a = new MessageChannel();
     37    ok(a, "MessageChannel created");
     38 
     39    var div = document.getElementById("content");
     40    ok(div, "Parent exists");
     41 
     42    var ifr = document.createElement("iframe");
     43    ifr.addEventListener("load", iframeLoaded);
     44    ifr.setAttribute('src', "iframe_messageChannel_cloning.html");
     45    div.appendChild(ifr);
     46 
     47    function iframeLoaded() {
     48      ifr.contentWindow.postMessage({ port: a.port2 }, '*', [a.port2]);
     49    }
     50  }
     51 
     52  var tests = [
     53    test_iframe
     54  ];
     55 
     56  function runTest() {
     57    if (!tests.length) {
     58      SimpleTest.finish();
     59      return;
     60    }
     61 
     62    var test = tests.shift();
     63    test();
     64  }
     65 
     66  SimpleTest.waitForExplicitFinish();
     67  runTest();
     68  </script>
     69 </body>
     70 </html>