blob: 343bacb15c2b645ed18ef8e80018c8a75dc5c35b [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<style>
iframe { border: 1px solid black; }
</style>
<script src="../../../../resources/js-test-pre.js"></script>
<script>
function numberOfTimesGetUserMediaPromptHasBeenCalled()
{
return testRunner.userMediaPermissionRequestCountForOrigin(document.location.href, document.location.href);
}
function gotStream3(s)
{
stream = s;
shouldBe("numberOfTimesGetUserMediaPromptHasBeenCalled()", "2");
shouldBe("stream.getAudioTracks().length", "1");
shouldBe("stream.getVideoTracks().length", "1");
debug("");
finishJSTest();
}
function gotStream2(s)
{
stream = s;
shouldBe("numberOfTimesGetUserMediaPromptHasBeenCalled()", "2");
shouldBe("stream.getAudioTracks().length", "0");
shouldBe("stream.getVideoTracks().length", "1");
debug("<br>** Request a stream with video and audio, the user should not be prompted again **");
shouldNotThrow("navigator.mediaDevices.getUserMedia({audio:true, video:true}).then(gotStream3);");
}
function gotStream1(s)
{
stream = s;
shouldBe("numberOfTimesGetUserMediaPromptHasBeenCalled()", "1");
shouldBe("stream.getAudioTracks().length", "1");
shouldBe("stream.getVideoTracks().length", "0");
debug("<br>** Request a video-only stream, the user should be prompted **");
shouldNotThrow("navigator.mediaDevices.getUserMedia({video:true}).then(gotStream2);")
}
function setup()
{
description("Tests that user is only prompted once per device in the current browsing context.");
testRunner.resetUserMediaPermissionRequestCountForOrigin(document.location.href, document.location.href);
shouldBe("numberOfTimesGetUserMediaPromptHasBeenCalled()", "0");
debug("<br>** Request an audio-only stream, the user should be prompted **");
shouldNotThrow("navigator.mediaDevices.getUserMedia({audio:true}).then(gotStream1);");
}
if (window.testRunner)
testRunner.setUserMediaPermission(true);
window.jsTestIsAsync = true;
window.successfullyParsed = true;
</script>
<script src="../../../../resources/js-test-post.js"></script>
</head>
<body onload="setup()">
</body>
</html>