| <!DOCTYPE html> |
| <title> postMessage(): clone a port </title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <div id=log></div> |
| <script> |
| async_test(function(t) { |
| var channelA = new MessageChannel(); |
| var channelB = new MessageChannel(); |
| var originalPort = channelB.port2; |
| channelA.port2.onmessage = t.step_func(function(e) { |
| assert_equals(e.data, "ports"); |
| var clonedPort = e.ports[0]; |
| assert_not_equals(clonedPort, originalPort, "new cloned port object should not equal to the original port!"); |
| clonedPort.onmessage = t.step_func_done(function(e) { |
| assert_equals(e.data, "ping", "Data sent through remote port is received by the new cloned port"); |
| }); |
| }); |
| channelA.port1.postMessage("ports", [channelB.port2]); |
| channelB.port1.postMessage("ping"); |
| }); |
| </script> |