57 lines
1.8 KiB
HTML
57 lines
1.8 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<script src="../../resources/js-test-pre.js"></script>
|
|
<script>
|
|
let tabState;
|
|
let streamCount = 4;
|
|
let streams = 0;
|
|
|
|
function gotStream(s)
|
|
{
|
|
debug('<br>** getUserMedia() promise resolved **')
|
|
shouldBe('tabState', "'foreground'");
|
|
stream = s;
|
|
shouldBe('stream.getAudioTracks().length', '1');
|
|
if (++streams == streamCount)
|
|
finishJSTest();
|
|
}
|
|
|
|
function fail(error)
|
|
{
|
|
testFailed(`getUserMedia() failed, error = ${error}`);
|
|
finishJSTest();
|
|
}
|
|
|
|
function checkState()
|
|
{
|
|
debug('<br>** timer fired **')
|
|
shouldBe('tabState', "'background'");
|
|
evalAndLog(`tabState = 'foreground'`);
|
|
if (internals)
|
|
internals.settings.setCanStartMedia(true);
|
|
}
|
|
|
|
function start()
|
|
{
|
|
description("Tests getUserMedia called from a background thread.");
|
|
evalAndLog(`tabState = 'background'`);
|
|
if (window.testRunner) {
|
|
internals.settings.setCanStartMedia(false);
|
|
testRunner.setUserMediaPermission(true);
|
|
}
|
|
for (var i = 0; i < streamCount; i++)
|
|
shouldNotThrow('navigator.mediaDevices.getUserMedia({audio:true}).then(gotStream).catch(fail)');
|
|
setTimeout(checkState, 200);
|
|
}
|
|
|
|
window.jsTestIsAsync = true;
|
|
window.successfullyParsed = true;
|
|
|
|
</script>
|
|
<script src="../../resources/js-test-post.js"></script>
|
|
</head>
|
|
<body onload="start()">
|
|
</body>
|
|
</html>
|