tor-browser

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

Channel_postMessage_with_transfer_entangled.any.js (1233B)


      1 async_test(function(t) {
      2    var channel1 = new MessageChannel();
      3    var channel2 = new MessageChannel();
      4 
      5     // One, send a message.
      6     channel1.port1.postMessage(1);
      7 
      8     // Two, transfer both ports.
      9     channel2.port1.postMessage("transfer", [channel1.port1]);
     10     channel2.port1.postMessage("transfer", [channel1.port2]);
     11 
     12     var transfer_counter = 0;
     13     var sender;
     14     channel2.port2.onmessage = t.step_func(function (evt) {
     15         if (transfer_counter == 0) {
     16             sender = evt.ports[0];
     17             transfer_counter = 1;
     18         } else {
     19             sender.postMessage(2);
     20             var counter = 0;
     21             evt.ports[0].onmessage = t.step_func(function (evt) {
     22                 if (counter == 0) {
     23                     assert_equals(evt.data, 1);
     24                     counter = 1;
     25                 } else if (counter == 1) {
     26                     assert_equals(evt.data, 2);
     27                     counter = 2;
     28                 } else {
     29                     assert_equals(evt.data, 3);
     30                     t.done();
     31                 }
     32             });
     33             sender.postMessage(3);
     34         }
     35      });
     36 }, "An entangled port transferred to the same origin receives messages in order");