tor-browser

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

Channel_postMessage_with_transfer_incoming_messages.any.js (1195B)


      1 async_test(function(t) {
      2  var channel1 = new MessageChannel();
      3  var channel2 = new MessageChannel();
      4  var channel3 = new MessageChannel();
      5  channel2.port2.onmessage = t.step_func(function (evt) {
      6    channel3.port1.onmessage = t.step_func(function (evt) {
      7      var counter = 0;
      8      evt.ports[0].onmessage = t.step_func(function (evt) {
      9        if (counter == 0) {
     10          assert_equals(evt.data, "First");
     11          counter = 1;
     12        } else if (counter == 1) {
     13          assert_equals(evt.data, "Second");
     14          counter = 2;
     15        } else if (counter == 2) {
     16          assert_equals(evt.data, "Third");
     17          counter = 3;
     18        } else if (counter == 3) {
     19          assert_equals(evt.data, "Fourth");
     20          t.done();
     21        }
     22      });
     23      channel1.port2.postMessage("Fourth");
     24    });
     25    channel1.port2.postMessage("Second");
     26    channel1.port2.postMessage("Third");
     27    channel3.port2.postMessage("2", evt.ports);
     28  });
     29  channel1.port2.postMessage("First");
     30  channel2.port1.postMessage("1", [channel1.port1]);
     31 }, `When transferring a non-enabled port mutiple times,
     32    incoming messages sent at various transfer steps are received in order upon enablement.`);