tor-browser

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

Worker-multi-port.html (3713B)


      1 <!DOCTYPE html>
      2 <title>Test sending multiple ports through Worker.postMessage.</title>
      3 <script src="/resources/testharness.js"></script>
      4 <script src="/resources/testharnessreport.js"></script>
      5 <script>
      6 async_test(function(t) {
      7  var worker = new Worker("support/Worker-thread-multi-port.js");
      8  worker.onmessage = t.step_func_done(function(evt) {
      9    assert_true(evt.data.startsWith('PASS'));
     10  });
     11  worker.postMessage("noport");
     12 }, 'Test postMessage with no port.');
     13 
     14 async_test(function(t) {
     15  var worker = new Worker("support/Worker-thread-multi-port.js");
     16  worker.onmessage = t.step_func_done(function(evt) {
     17    assert_true(evt.data.startsWith('PASS'));
     18  });
     19  worker.postMessage("noargs");
     20 }, 'Test postMessage with no arguments.');
     21 
     22 async_test(function(t) {
     23  var worker = new Worker("support/Worker-thread-multi-port.js");
     24  worker.onmessage = t.step_func_done(function(evt) {
     25    assert_true(evt.data.startsWith('PASS'));
     26  });
     27  worker.postMessage("zero ports", []);
     28 }, 'Test postMessage with no ports and empty array.');
     29 
     30 async_test(function(t) {
     31  var worker = new Worker("support/Worker-thread-multi-port.js");
     32  var channel = new MessageChannel();
     33  worker.onmessage = t.step_func_done(function(evt) {
     34    assert_true(evt.data.startsWith('PASS'));
     35  });
     36  worker.postMessage("two ports", [channel.port1, channel.port2]);
     37 }, 'Test postMessage with two ports.');
     38 
     39 test(() => {
     40  var worker = new Worker("support/Worker-thread-multi-port.js");
     41  assert_throws_js(TypeError,
     42                   function() { worker.postMessage(); },
     43                   'Empty postMessage should throw exception.');
     44 }, 'Test empty postMessage throws exception.');
     45 
     46 test(() => {
     47  var worker = new Worker("support/Worker-thread-multi-port.js");
     48  var channel = new MessageChannel();
     49  assert_throws_js(TypeError,
     50                   function() { worker.postMessage("null port",
     51                                                   [channel.port1, null,
     52                                                    channel.port2]); },
     53                   'postMessage with null ports should throw exception.');
     54 }, 'Test postMessage with null ports throws exception.');
     55 
     56 test(() => {
     57  var worker = new Worker("support/Worker-thread-multi-port.js")
     58  var channel = new MessageChannel();
     59  assert_throws_dom('DataCloneError',
     60                    function() { worker.postMessage("notAPort",
     61                                                    [channel.port1, {},
     62                                                     channel.port2]); },
     63                    'postMessage with incorrect ports should throw exception.');
     64 }, 'Test postMessage with incorrect ports throws exception');
     65 
     66 test(() => {
     67  var worker = new Worker("support/Worker-thread-multi-port.js");
     68  assert_throws_dom('DataCloneError',
     69                    function() { worker.postMessage("notASequence", [{length: 3}]) },
     70                    'postMessage without sequence should throw exception.');
     71 }, 'Test postMessage without sequence throws exception');
     72 
     73 async_test(function(t) {
     74  var worker = new Worker("support/Worker-thread-multi-port.js");
     75  var channel = new MessageChannel();
     76  assert_throws_dom('DataCloneError',
     77                    function() { worker.postMessage("notAPort",
     78                                                    [channel.port1, {},
     79                                                     channel.port2]); },
     80                    'postMessage with incorrect ports should throw exception.');
     81  worker.onmessage = t.step_func_done(function(evt) {
     82    assert_true(evt.data.startsWith('PASS'));
     83  });
     84  worker.postMessage("failed ports", [channel.port1, channel.port2]);
     85 }, 'Test postMessage on channel with previous failed postMessage calls.');
     86 </script>