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