// META: title=postMessage(): clone a port
var OriginalPort = null;
var ClonedPort = null;
var description = "Test Description: When the user agent is to clone a port original port, with "
+ "the clone being owned by owner, it must return a new MessagePort object";
var t = async_test("Test Description: " + description);
var ChannelA = new MessageChannel();
var ChannelB = new MessageChannel();
OriginalPort = ChannelB.port2;
ChannelA.port2.onmessage = t.step_func(function(evt)
{
if(evt.data == "ports")
{
ClonedPort = evt.ports[0];
assert_not_equals(ClonedPort, OriginalPort, "new cloned port object should not equal to the original port!");
ClonedPort.onmessage = function(e)
{
test(function(){ assert_equals(e.data, "ping"); }, "Data sent through remote port is received by the new cloned port");
t.done();
}
}
});
ChannelA.port1.postMessage("ports", [OriginalPort]);
ChannelB.port1.postMessage("ping");