Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test has a WPT meta file that expects 1 subtest issues.
- This WPT test may be referenced by the following Test IDs:
- /mediacapture-insertable-streams/legacy/MediaStreamTrackGenerator-pipes-data-in-worker.https.html - WPT Dashboard Interop Dashboard
<!doctype html>
<title>Test piping data through MediaStreamTrackGenerator in a worker</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script id="workerCode" type="javascript/worker">
self.onmessage = (e) => {
try {
const generator = new MediaStreamTrackGenerator({kind: 'video'});
e.data.readable.pipeTo(generator.writable);
self.postMessage({result: 'Success'});
} catch (e) {
self.postMessage({result: 'Failure', error: e});
}
}
</script>
<script>
'use strict';
promise_test(async t => {
const workerBlob = new Blob([document.querySelector('#workerCode').textContent],
{ type: "text/javascript" });
const workerUrl = window.URL.createObjectURL(workerBlob);
const worker = new Worker(workerUrl);
window.URL.revokeObjectURL(workerUrl);
const result = new Promise((resolve, reject) => {
worker.onmessage = (e) => {
if (e.data.result === 'Failure') {
reject('Failed with error ' + e.data.error);
} else {
resolve();
}
};
});
const stream = await navigator.mediaDevices.getUserMedia({ video: true });
const track = stream.getVideoTracks()[0];
const processor = new MediaStreamTrackProcessor({ track: track });
worker.postMessage({ readable: processor.readable },
[processor.readable]);
return result;
}, 'A worker is able to pipe data through a MediaStreamTrackGenerator without crashing');
</script>