dom/base/test/test_messagePort.html

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     1 <!DOCTYPE HTML>
     2 <html>
     3 <!--
     4 https://bugzilla.mozilla.org/show_bug.cgi?id=912456
     5 -->
     6 <head>
     7   <meta charset="utf-8">
     8   <title>Test for Bug 912456 - port cloning</title>
     9   <script type="application/javascript" 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=912456">Mozilla Bug 912456</a>
    14 <script type="application/javascript">
    16   function testTransfer() {
    17     var a = new MessageChannel();
    18     ok(a, "MessageChannel created");
    20     window.addEventListener('message', receiveMessage, false);
    21     function receiveMessage(evt) {
    22       ok(evt.data.port, "Port has been received!");
    24       var a = new MessageChannel();
    25       ok(a, "MessageChannel created");
    27       try {
    28         evt.data.port.postMessage({port: a.port2});
    29         ok(false, "PostMessage should throw! - no transfered port");
    30       } catch(e) {
    31         ok(true, "PostMessage should throw! - no transfered port");
    32       }
    34       try {
    35         evt.data.port.postMessage({port: a.port2}, [a.port2, a.port2]);
    36         ok(false, "PostMessage should throw - no duplicate!");
    37       } catch(e) {
    38         ok(true, "PostMessage should throw - no duplicate!");
    39       }
    41       evt.data.port.postMessage({port: a.port2}, [a.port2]);
    42     }
    44     a.port1.onmessage = function(evt) {
    45       ok(evt.data.port, "Port has been received!");
    46       window.removeEventListener('message', receiveMessage);
    47       runTest();
    48     }
    50     try {
    51       postMessage({ port: a.port2}, 42, '*');
    52       ok(false, "PostMessage should throw! - no transfered port");
    53     } catch(e) {
    54       ok(true, "PostMessage should throw! - no transfered port");
    55     }
    57     try {
    58       postMessage({ port: a.port2}, 42, '*', [a.port2, a.port2]);
    59       ok(false, "PostMessage should throw - no duplicate!");
    60     } catch(e) {
    61       ok(true, "PostMessage should throw - no duplicate!");
    62     }
    64     postMessage({port: a.port2}, '*', [a.port2]);
    65   }
    67   function testPorts() {
    68     var a = new MessageChannel();
    69     ok(a, "MessageChannel created");
    71     window.addEventListener('message', receiveMessage, false);
    72     function receiveMessage(evt) {
    73       ok(evt.data, "Data is 42");
    74       ok(evt.ports, "Port is received");
    75       is(evt.ports.length, 1, "Ports.length is 1");
    77       var a = new MessageChannel();
    78       ok(a, "MessageChannel created");
    80       evt.ports[0].postMessage(42, [a.port2]);
    81     }
    83     a.port1.onmessage = function(evt) {
    84       ok(evt.data, "Data is 42");
    85       ok(evt.ports, "Port is received");
    86       is(evt.ports.length, 1, "Ports.length is 1");
    87       window.removeEventListener('message', receiveMessage);
    88       runTest();
    89     }
    91     postMessage(42, '*', [a.port2]);
    92   }
    94   var tests = [
    95     testTransfer,
    96     testPorts
    97   ];
    99   function runTest() {
   100     if (!tests.length) {
   101       SimpleTest.finish();
   102       return;
   103     }
   105     var test = tests.shift();
   106     test();
   107   }
   109   SimpleTest.waitForExplicitFinish();
   110   SpecialPowers.pushPrefEnv({"set": [["dom.messageChannel.enabled", true]]}, runTest);
   112 </script>
   113 </body>
   114 </html>

mercurial