WebRTC: Navigator.webkitGetUserMedia() requires three arguments
[WebKit-https.git] / LayoutTests / fast / mediastream / script-tests / argument-types.js
1 description("Tests the acceptable types for arguments to navigator.getUserMedia methods.");
2
3 function test(expression, expressionShouldThrow, expectedException) {
4     if (expressionShouldThrow) {
5         if (expectedException)
6             shouldThrow(expression, '"' + expectedException + '"');
7         else
8             shouldThrow(expression, '"TypeError: Not enough arguments"');
9     } else {
10         shouldNotThrow(expression);
11     }
12 }
13
14 var errorCallbackError = new TypeError("Argument 3 ('errorCallback') to Navigator.webkitGetUserMedia must be a function")
15 var invalidDictionaryError = new TypeError('First argument of webkitGetUserMedia must be a valid Dictionary')
16 var notSupportedError = new Error('NotSupportedError: DOM Exception 9');
17 var successCallbackError = new TypeError("Argument 2 ('successCallback') to Navigator.webkitGetUserMedia must be a function")
18 var typeError = new TypeError('Type error');
19 var typeNotAnObjectError = new TypeError('Not an object.');
20
21 var emptyFunction = function() {};
22
23 // No arguments
24 test('navigator.webkitGetUserMedia()', true);
25
26 // 1 Argument (Navigtor.webkitGetUserMedia requires at least 3 arguments).
27 test('navigator.webkitGetUserMedia(undefined)', true);
28 test('navigator.webkitGetUserMedia(null)', true);
29 test('navigator.webkitGetUserMedia({ })', true);
30 test('navigator.webkitGetUserMedia({video: true})', true);
31 test('navigator.webkitGetUserMedia(true)', true);
32 test('navigator.webkitGetUserMedia(42)', true);
33 test('navigator.webkitGetUserMedia(Infinity)', true);
34 test('navigator.webkitGetUserMedia(-Infinity)', true);
35 test('navigator.webkitGetUserMedia(emptyFunction)', true);
36
37 // 2 Arguments.
38 test('navigator.webkitGetUserMedia({video: true}, emptyFunction)', true);
39 test('navigator.webkitGetUserMedia(undefined, emptyFunction)', true);
40 test('navigator.webkitGetUserMedia(null, emptyFunction)', true);
41 test('navigator.webkitGetUserMedia({ }, emptyFunction)', true);
42 test('navigator.webkitGetUserMedia(true, emptyFunction)', true);
43 test('navigator.webkitGetUserMedia(42, emptyFunction)', true);
44 test('navigator.webkitGetUserMedia(Infinity, emptyFunction)', true);
45 test('navigator.webkitGetUserMedia(-Infinity, emptyFunction)', true);
46 test('navigator.webkitGetUserMedia(emptyFunction, emptyFunction)', true);
47 test('navigator.webkitGetUserMedia({video: true}, "foobar")', true);
48 test('navigator.webkitGetUserMedia({video: true}, undefined)', true);
49 test('navigator.webkitGetUserMedia({video: true}, null)', true);
50 test('navigator.webkitGetUserMedia({video: true}, {})', true);
51 test('navigator.webkitGetUserMedia({video: true}, true)', true);
52 test('navigator.webkitGetUserMedia({video: true}, 42)', true);
53 test('navigator.webkitGetUserMedia({video: true}, Infinity)', true);
54 test('navigator.webkitGetUserMedia({video: true}, -Infinity)', true);
55
56 // 3 Arguments.
57 test('navigator.webkitGetUserMedia({ }, emptyFunction, emptyFunction)', true, notSupportedError);
58 test('navigator.webkitGetUserMedia({video: true}, emptyFunction, emptyFunction)', false);
59 test('navigator.webkitGetUserMedia({video: true}, emptyFunction, undefined)', true, errorCallbackError);
60 test('navigator.webkitGetUserMedia({audio:true, video:true}, emptyFunction, undefined)', true, errorCallbackError);
61 test('navigator.webkitGetUserMedia({audio:true}, emptyFunction, undefined)', true, errorCallbackError);
62 test('navigator.webkitGetUserMedia({video: true}, emptyFunction, "video")', true, errorCallbackError);
63 test('navigator.webkitGetUserMedia({video: true}, emptyFunction, null)', true, errorCallbackError );
64 test('navigator.webkitGetUserMedia({video: true}, emptyFunction, {})', true, errorCallbackError);
65 test('navigator.webkitGetUserMedia({video: true}, emptyFunction, true)', true, errorCallbackError);
66 test('navigator.webkitGetUserMedia({video: true}, emptyFunction, 42)', true, errorCallbackError);
67 test('navigator.webkitGetUserMedia({video: true}, emptyFunction, Infinity)', true, errorCallbackError);
68 test('navigator.webkitGetUserMedia({video: true}, emptyFunction, -Infinity)', true, errorCallbackError);
69
70 window.jsTestIsAsync = false;