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.`);