Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[BreakoutBox] Update tests for MediaStreamTrackProcessor
Add worker tests and simplify an existing audio test Change-Id: I513f9627ffc3646e36db9076e5e3c8580d1e2619 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2945190 Reviewed-by: Harald Alvestrand <hta@chromium.org> Commit-Queue: Guido Urdaneta <guidou@chromium.org> Cr-Commit-Position: refs/heads/master@{#891542}
- Loading branch information
Guido Urdaneta
authored and
Chromium LUCI CQ
committed
Jun 11, 2021
1 parent
1e93785
commit 87f69e3
Showing
3 changed files
with
107 additions
and
33 deletions.
There are no files selected for viewing
73 changes: 40 additions & 33 deletions
73
...s/external/wpt/mediacapture-insertable-streams/MediaStreamTrackProcessor-audio.https.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,43 +1,50 @@ | ||
<!doctype html> | ||
<html> | ||
|
||
<head> | ||
<title>MediaStreamTrackProcessor</title> | ||
<link rel="help" href="https://w3c.github.io/mediacapture-insertable-streams"> | ||
</head> | ||
|
||
<body> | ||
<p class="instructions">When prompted, use the accept button to give permission to use your audio and video devices.</p> | ||
<h1 class="instructions">Description</h1> | ||
<p class="instructions">This test checks that processing captured audio MediaStreamTracks works as expected.</p> | ||
<script src=/resources/testharness.js></script> | ||
<script src=/resources/testharnessreport.js></script> | ||
<script> | ||
<p class="instructions">When prompted, use the accept button to give permission to use your audio and video devices.</p> | ||
<h1 class="instructions">Description</h1> | ||
<p class="instructions">This test checks that MediaStreamTrackProcessor works as expected on audio MediaStreamTracks.</p> | ||
<script src=/resources/testharness.js></script> | ||
<script src=/resources/testharnessreport.js></script> | ||
<script> | ||
promise_test(async t => { | ||
const stream = await navigator.mediaDevices.getUserMedia({audio: true}); | ||
const track = stream.getTracks()[0]; | ||
const processor = new MediaStreamTrackProcessor({track: track}); | ||
const reader = processor.readable.getReader(); | ||
const readResult = await reader.read(); | ||
assert_false(readResult.done) | ||
assert_true(readResult.value instanceof AudioData); | ||
readResult.value.close(); | ||
track.stop(); | ||
return reader.closed; | ||
}, "Tests that the reader of an audio MediaStreamTrackProcessor produces AudioData objects and is closed on track stop"); | ||
|
||
promise_test(async t => { | ||
const stream = await navigator.mediaDevices.getUserMedia({ audio: true }); | ||
assert_equals(stream.getAudioTracks().length, 1); | ||
const audioTrack = stream.getAudioTracks()[0]; | ||
|
||
return new Promise((resolve, reject) => { | ||
const writableStream = new WritableStream({ | ||
write(audioData) { | ||
assert_true(audioData instanceof AudioData); | ||
assert_not_equals(audioData.timestamp, null); | ||
resolve(); | ||
}, | ||
close() { | ||
assert_unreached("Closed"); | ||
}, | ||
abort(err) { | ||
assert_unreached("Sink error:" + err); | ||
} | ||
}); | ||
const audioTrackProcessor = new MediaStreamTrackProcessor(audioTrack); | ||
audioTrackProcessor.readable.pipeTo(writableStream); | ||
}); | ||
}, "Tests that creating an Audio MediaStreamTrackProcessor works as expected"); | ||
</script> | ||
promise_test(async t => { | ||
const stream = await navigator.mediaDevices.getUserMedia({audio: true}); | ||
const track = stream.getTracks()[0]; | ||
const processor = new MediaStreamTrackProcessor({track: track}); | ||
const worker = new Worker('MediaStreamTrackProcessor-worker.js'); | ||
const promise = new Promise(resolve => { | ||
worker.onmessage = t.step_func(msg => { | ||
if (msg.data instanceof AudioData) { | ||
msg.data.close(); | ||
track.stop(); | ||
} else if (msg.data == 'closed') { | ||
resolve(); | ||
} else { | ||
assert_unreached(); | ||
} | ||
}) | ||
}); | ||
worker.postMessage({readable: processor.readable}, | ||
[processor.readable]); | ||
return promise; | ||
}, "Tests that the reader of an audio MediaStreamTrackProcessor produces AudioData objects and is closed on track stop while running on a worker"); | ||
</script> | ||
</body> | ||
|
||
</html> |
50 changes: 50 additions & 0 deletions
50
...s/external/wpt/mediacapture-insertable-streams/MediaStreamTrackProcessor-video.https.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
<!doctype html> | ||
<html> | ||
<head> | ||
<title>MediaStreamTrackProcessor</title> | ||
<link rel="help" href="https://w3c.github.io/mediacapture-insertable-streams"> | ||
</head> | ||
<body> | ||
<p class="instructions">When prompted, use the accept button to give permission to use your audio and video devices.</p> | ||
<h1 class="instructions">Description</h1> | ||
<p class="instructions">This test checks that MediaStreamTrackProcessor works as expected on video MediaStreamTracks.</p> | ||
<script src=/resources/testharness.js></script> | ||
<script src=/resources/testharnessreport.js></script> | ||
<script> | ||
promise_test(async t => { | ||
const stream = await navigator.mediaDevices.getUserMedia({video: true}); | ||
const track = stream.getTracks()[0]; | ||
const processor = new MediaStreamTrackProcessor({track: track}); | ||
const reader = processor.readable.getReader(); | ||
const readResult = await reader.read(); | ||
assert_false(readResult.done) | ||
assert_true(readResult.value instanceof VideoFrame); | ||
readResult.value.close(); | ||
track.stop(); | ||
return reader.closed; | ||
}, "Tests that the reader of a video MediaStreamTrackProcessor produces video frames and is closed on track stop"); | ||
|
||
promise_test(async t => { | ||
const stream = await navigator.mediaDevices.getUserMedia({video: true}); | ||
const track = stream.getTracks()[0]; | ||
const processor = new MediaStreamTrackProcessor({track: track}); | ||
const worker = new Worker('MediaStreamTrackProcessor-worker.js'); | ||
const promise = new Promise(resolve => { | ||
worker.onmessage = t.step_func(msg => { | ||
if (msg.data instanceof VideoFrame) { | ||
msg.data.close(); | ||
track.stop(); | ||
} else if (msg.data == 'closed') { | ||
resolve(); | ||
} else { | ||
assert_unreached(); | ||
} | ||
}) | ||
}); | ||
worker.postMessage({readable: processor.readable}, | ||
[processor.readable]); | ||
return promise; | ||
}, "Tests that the reader of a video MediaStreamTrackProcessor produces VideoFrame objects and is closed on track stop while running on a worker"); | ||
</script> | ||
</body> | ||
</html> |
17 changes: 17 additions & 0 deletions
17
...eb_tests/external/wpt/mediacapture-insertable-streams/MediaStreamTrackProcessor-worker.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
onmessage = async msg => { | ||
const reader = msg.data.readable.getReader(); | ||
let readResult = await reader.read(); | ||
postMessage(readResult.value); | ||
readResult.value.close(); | ||
// Continue reading until the stream is done due to a track.stop() | ||
while (true) { | ||
readResult = await reader.read(); | ||
if (readResult.done) { | ||
break; | ||
} else { | ||
readResult.value.close(); | ||
} | ||
} | ||
await reader.closed; | ||
postMessage('closed'); | ||
} |