gecko-dev/dom/media/test/test_multiple_mediastreamtracks.html
Bryce Van Dyk 898975f341 Bug 1436523 - Update dom/media/test/ tests to better handle loopback + gUM device config. r=achronop
This changeset adds a gUM_support.js to dom/media/test/. This file provides
functions to setup prefs for loopback or fake device selection before gUM calls
are made. This is useful for configuring tests and providing an explicit point
of reference for settings, rather than the implicit ones provided by the
harness.

Updates tests so that the new helper functions are called before gUM. This
will result in loopback prefs being set if loopback device names are detected,
if not then fake devices will be used. This also removes the use of the fake
constraint in gUM calls.

Update touched tests to use some more modern JS. No behavioural changes were
made (except in minor cases, but functionality should be the same). These
changes are largely as follows:
- var -> let
- async is used in places where I felt it improved readability
- semicolons added to various event handler assignments

MozReview-Commit-ID: 1HuE8thBA6w

--HG--
extra : rebase_source : b866056b2821436cf34ea683421c200b4bb4e55f
2018-02-21 09:11:29 -05:00

48 lines
1.4 KiB
HTML

<!DOCTYPE HTML>
<html>
<head>
<title>Test the ability of MediaStream with multiple MediaStreamTracks</title>
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
<script type="text/javascript" src="manifest.js"></script>
<script type="text/javascript" src="gUM_support.js"></script>
</head>
<body>
<pre id="test">
<script class="testbody" type="text/javascript">
async function startTest() {
try {
await setupGetUserMediaTestPrefs();
let orgStream = await navigator.mediaDevices.getUserMedia({audio: true, video: true});
let a = orgStream.getAudioTracks()[0];
let v = orgStream.getVideoTracks()[0];
let stream = new MediaStream([a, a, a, a, v, v, v].map(track => track.clone()));
let element = document.createElement("video");
element.onloadedmetadata = function() {
is(stream.getAudioTracks().length, 4, 'Length of audio tracks should be 4.');
is(stream.getVideoTracks().length, 3, 'Length of vudio tracks should be 3.');
SimpleTest.finish();
};
element.srcObject = stream;
element.play();
} catch (err) {
ok(false, 'Unexpected error fired with: ' + err);
SimpleTest.finish();
}
}
SimpleTest.waitForExplicitFinish();
SpecialPowers.pushPrefEnv(
{
"set": [
["media.track.enabled", true]
]
}, startTest);
</script>
</pre>
</body>
</html>