| |
| async_test(function(t) { |
| var channel1 = new MessageChannel(); |
| var channel2 = new MessageChannel(); |
| var channel3 = new MessageChannel(); |
| channel2.port2.onmessage = t.step_func(function (evt) { |
| evt.ports[0].postMessage("Second"); |
| evt.ports[0].postMessage("Third"); |
| channel3.port1.onmessage = t.step_func(function (evt) { |
| evt.ports[0].postMessage("Fourth"); |
| }); |
| channel3.port2.postMessage("2", evt.ports); |
| }); |
| channel1.port1.postMessage("First"); |
| channel2.port1.postMessage("1", [channel1.port1]); |
| var counter = 0; |
| channel1.port2.onmessage = t.step_func(function (evt) { |
| if (counter == 0) { |
| assert_equals(evt.data, "First"); |
| counter = 1; |
| } else if (counter == 1) { |
| assert_equals(evt.data, "Second"); |
| counter = 2; |
| } |
| else if (counter == 2) { |
| assert_equals(evt.data, "Third"); |
| counter = 3; |
| } |
| else if (counter == 3) { |
| assert_equals(evt.data, "Fourth"); |
| t.done(); |
| } |
| }); |
| }, `When transferring a port, |
| outgoing messages sent at each transfer step are received in order by the entangled port.`); |