Channel_postMessage_with_transfer_outgoing_messages.any.js (1112B)
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 evt.ports[0].postMessage("Second"); 7 evt.ports[0].postMessage("Third"); 8 channel3.port1.onmessage = t.step_func(function (evt) { 9 evt.ports[0].postMessage("Fourth"); 10 }); 11 channel3.port2.postMessage("2", evt.ports); 12 }); 13 channel1.port1.postMessage("First"); 14 channel2.port1.postMessage("1", [channel1.port1]); 15 var counter = 0; 16 channel1.port2.onmessage = t.step_func(function (evt) { 17 if (counter == 0) { 18 assert_equals(evt.data, "First"); 19 counter = 1; 20 } else if (counter == 1) { 21 assert_equals(evt.data, "Second"); 22 counter = 2; 23 } 24 else if (counter == 2) { 25 assert_equals(evt.data, "Third"); 26 counter = 3; 27 } 28 else if (counter == 3) { 29 assert_equals(evt.data, "Fourth"); 30 t.done(); 31 } 32 }); 33 }, `When transferring a port, 34 outgoing messages sent at each transfer step are received in order by the entangled port.`);