blob: d76ec0d145e86cc4a85fa801bde71e853826aeb1 [file] [edit]
<body>
<p>Test that a MediaStreamTrack can be transferred through a MessageChannel in the same context.</p>
<pre id="log"></pre>
<script>
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.waitUntilDone();
}
function log(msg) {
document.getElementById("log").textContent += msg + "\n";
}
async function runTest() {
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
const track = stream.getAudioTracks()[0];
const channel = new MessageChannel();
let receivedTransfer = false;
channel.port2.onmessage = (event) => {
if (event.data === "done") {
if (!receivedTransfer)
log("FAIL: never received the MediaStreamTrack message");
if (window.testRunner)
testRunner.notifyDone();
return;
}
receivedTransfer = true;
const received = event.data;
if (received instanceof MediaStreamTrack)
log("PASS: received a MediaStreamTrack");
else
log("FAIL: expected a MediaStreamTrack, got " + received);
if (received.kind === "audio")
log("PASS: track kind is audio");
else
log("FAIL: expected kind 'audio', got '" + received.kind + "'");
received.stop();
};
channel.port1.postMessage(track, [track]);
channel.port1.postMessage("done");
}
runTest().catch(e => {
log("FAIL: " + e);
if (window.testRunner)
testRunner.notifyDone();
});
</script>
</body>