Bug 1592287 - Modernize test_streams_tracks.html. r=jib

Differential Revision: https://phabricator.services.mozilla.com/D52812

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Andreas Pehrson 2019-11-20 15:23:35 +00:00
parent 5bfad8be74
commit b02bd971e8

View File

@ -9,41 +9,42 @@
<body>
<pre id="test">
<script class="testbody" type="text/javascript">
var manager = new MediaTestManager;
const manager = new MediaTestManager;
function testTracks(tracks, hasTrack, kind, src) {
is(tracks.length, hasTrack ? 1 : 0, "Correct track count for " + src);
for (var i = 0; i < tracks.length; ++i) {
var track = tracks[i];
is(track.kind, kind, "Correct track kind for track " + i + " of " + src);
is(tracks.length, hasTrack ? 1 : 0, `Correct ${kind} track count for ${src}`);
for (const track of tracks) {
is(track.kind, kind, `Correct track kind for track ${track.id} of ${src}`);
ok(/\{........-....-....-....-............\}/.test(track.id),
"id " + track.id + " for track " + i + " of " + src + " has correct form");
`id ${track.id} for ${track.kind} track of ${src} has correct form`);
}
}
function onended(e) {
var t = e.target;
var audioTracks = t.stream.getAudioTracks();
var videoTracks = t.stream.getVideoTracks();
async function startTest(test, token) {
try {
info(`Starting test of ${test.name}`);
const element = document.createElement("video");
testTracks(audioTracks, t.test.hasAudio, "audio", t.src);
testTracks(videoTracks, t.test.hasVideo, "video", t.src);
element.token = token;
manager.started(token);
manager.finished(t.token);
}
element.src = test.name;
element.test = test;
const stream = element.mozCaptureStreamUntilEnded();
function startTest(test, token) {
var element = document.createElement("video");
element.play();
element.token = token;
manager.started(token);
await new Promise(r => element.onended = r);
element.src = test.name;
element.test = test;
element.stream = element.mozCaptureStreamUntilEnded();
element.addEventListener("ended", onended);
testTracks(stream.getAudioTracks(), test.hasAudio, "audio", test.name);
testTracks(stream.getVideoTracks(), test.hasVideo, "video", test.name);
element.play();
} catch(e) {
ok(false, `Caught error: ${e}`);
} finally {
manager.finished(token);
}
}
manager.runTests(gTrackTests, startTest);