Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

// META: script=/common/get-host-info.sub.js
async_test(function(t) {
var channel1 = new MessageChannel();
var host = get_host_info();
let iframe = document.createElement('iframe');
iframe.src = host.HTTP_NOTSAMESITE_ORIGIN + "/webmessaging/support/ChildWindowPostMessage.htm";
document.body.appendChild(iframe);
var TARGET = document.querySelector("iframe").contentWindow;
iframe.onload = t.step_func(function() {
// Enable the port.
channel1.port1.onmessage = t.step_func(function (evt) {
assert_equals(Number(evt.data), 0);
// Send a message, expecting it to be received in the iframe.
channel1.port2.postMessage(1)
// Transfer the port.
TARGET.postMessage("ports", "*", [channel1.port1]);
});
// Send a message, expecting it to be received here.
channel1.port2.postMessage(0)
channel1.port2.onmessage = t.step_func(function (evt) {
assert_equals(Number(evt.data), 1);
t.done();
});
});
}, `Tasks enqueued on the port-message-queue of an enabled port,
are transferred along with the port, when the transfer happens in the same task
during which postMessage is called`);