blob: 06828a7d6ee0cc82469262561a0e4dc6d8a4b4f3 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
</head>
<body>
<script>
description("Tests the acceptable types for arguments to navigator.getUserMedia methods.");
function test(expression, expressionShouldThrow, expectedException) {
if (expressionShouldThrow) {
if (expectedException)
shouldThrow(expression, '"' + expectedException + '"');
else
shouldThrow(expression, '"TypeError: Not enough arguments"');
} else {
shouldNotThrow(expression);
}
}
var errorCallbackError = new TypeError("Argument 3 ('errorCallback') to Navigator.getUserMedia must be a function")
var invalidDictionaryError = new TypeError('First argument of getUserMedia must be a valid Dictionary')
var notSupportedError = new Error('NotSupportedError: DOM Exception 9');
var successCallbackError = new TypeError("Argument 2 ('successCallback') to Navigator.getUserMedia must be a function")
var typeError = new TypeError('Type error');
var typeNotAnObjectError = new TypeError('Not an object.');
var emptyFunction = function() {};
// No arguments
test('navigator.getUserMedia()', true);
// 1 Argument (Navigtor.getUserMedia requires at least 3 arguments).
test('navigator.getUserMedia(undefined)', true);
test('navigator.getUserMedia(null)', true);
test('navigator.getUserMedia({ })', true);
test('navigator.getUserMedia({video: true})', true);
test('navigator.getUserMedia(true)', true);
test('navigator.getUserMedia(42)', true);
test('navigator.getUserMedia(Infinity)', true);
test('navigator.getUserMedia(-Infinity)', true);
test('navigator.getUserMedia(emptyFunction)', true);
// 2 Arguments.
test('navigator.getUserMedia({video: true}, emptyFunction)', true);
test('navigator.getUserMedia(undefined, emptyFunction)', true);
test('navigator.getUserMedia(null, emptyFunction)', true);
test('navigator.getUserMedia({ }, emptyFunction)', true);
test('navigator.getUserMedia(true, emptyFunction)', true);
test('navigator.getUserMedia(42, emptyFunction)', true);
test('navigator.getUserMedia(Infinity, emptyFunction)', true);
test('navigator.getUserMedia(-Infinity, emptyFunction)', true);
test('navigator.getUserMedia(emptyFunction, emptyFunction)', true);
test('navigator.getUserMedia({video: true}, "foobar")', true);
test('navigator.getUserMedia({video: true}, undefined)', true);
test('navigator.getUserMedia({video: true}, null)', true);
test('navigator.getUserMedia({video: true}, {})', true);
test('navigator.getUserMedia({video: true}, true)', true);
test('navigator.getUserMedia({video: true}, 42)', true);
test('navigator.getUserMedia({video: true}, Infinity)', true);
test('navigator.getUserMedia({video: true}, -Infinity)', true);
// 3 Arguments.
test('navigator.getUserMedia({ }, emptyFunction, emptyFunction)', false);
test('navigator.getUserMedia({video: true}, emptyFunction, emptyFunction)', false);
test('navigator.getUserMedia({video: true}, emptyFunction, undefined)', true, errorCallbackError);
test('navigator.getUserMedia({audio:true, video:true}, emptyFunction, undefined)', true, errorCallbackError);
test('navigator.getUserMedia({audio:true}, emptyFunction, undefined)', true, errorCallbackError);
test('navigator.getUserMedia({video: true}, emptyFunction, "video")', true, errorCallbackError);
test('navigator.getUserMedia({video: true}, emptyFunction, null)', true, errorCallbackError );
test('navigator.getUserMedia({video: true}, emptyFunction, {})', true, errorCallbackError);
test('navigator.getUserMedia({video: true}, emptyFunction, true)', true, errorCallbackError);
test('navigator.getUserMedia({video: true}, emptyFunction, 42)', true, errorCallbackError);
test('navigator.getUserMedia({video: true}, emptyFunction, Infinity)', true, errorCallbackError);
test('navigator.getUserMedia({video: true}, emptyFunction, -Infinity)', true, errorCallbackError);
window.jsTestIsAsync = false;
</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>