| <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> |
| <html> |
| <head> |
| <script src="../../resources/js-test.js"></script> |
| </head> |
| <body> |
| <script> |
| description("Tests the acceptable types for arguments to navigator.getUserMedia methods."); |
| window.jsTestIsAsync = true; |
| |
| // Pending callbacks may cause the leak detector run at the end of the test to |
| // find leaked blink nodes. Therefore, we must wait for all callbacks to arrive |
| // before finishing the test run. |
| var remainingExpectedCallbackCount = 3; |
| var callbackFunction = function() { |
| remainingExpectedCallbackCount--; |
| if (remainingExpectedCallbackCount == 0) { |
| finishJSTest(); |
| } |
| }; |
| var emptyFunction = function() {}; |
| |
| // No arguments |
| shouldThrow('navigator.webkitGetUserMedia()'); |
| |
| // 1/2 arguments (getUserMedia requires at least 3 arguments). |
| shouldThrow('navigator.webkitGetUserMedia({video: true})'); |
| shouldThrow('navigator.webkitGetUserMedia({video: true}, emptyFunction)'); |
| |
| // 3 arguments (getUserMedia requires at least 3 arguments). |
| shouldNotThrow('navigator.webkitGetUserMedia({video: true}, callbackFunction, callbackFunction)'); |
| shouldNotThrow('navigator.webkitGetUserMedia({audio: true}, callbackFunction, callbackFunction)'); |
| shouldNotThrow('navigator.webkitGetUserMedia({audio: true, video: true}, callbackFunction, callbackFunction)'); |
| shouldThrow('navigator.webkitGetUserMedia(-Infinity, emptyFunction, emptyFunction)'); |
| shouldThrow('navigator.webkitGetUserMedia(42, emptyFunction, emptyFunction)'); |
| shouldThrow('navigator.webkitGetUserMedia(Infinity, emptyFunction, emptyFunction)'); |
| shouldThrow('navigator.webkitGetUserMedia(emptyFunction, emptyFunction, emptyFunction)'); |
| shouldThrow('navigator.webkitGetUserMedia(null, emptyFunction, emptyFunction)'); |
| shouldThrow('navigator.webkitGetUserMedia(true, emptyFunction, emptyFunction)'); |
| shouldThrow('navigator.webkitGetUserMedia(undefined, emptyFunction, emptyFunction)'); |
| shouldThrow('navigator.webkitGetUserMedia({ }, emptyFunction, emptyFunction)'); |
| shouldThrow('navigator.webkitGetUserMedia({foo: true }, emptyFunction, emptyFunction)'); |
| shouldThrow('navigator.webkitGetUserMedia({audio:true, video:true}, emptyFunction, undefined)'); |
| shouldThrow('navigator.webkitGetUserMedia({video: true}, "foobar", emptyFunction)'); |
| shouldThrow('navigator.webkitGetUserMedia({video: true}, -Infinity, emptyFunction)'); |
| shouldThrow('navigator.webkitGetUserMedia({video: true}, 42, emptyFunction)'); |
| shouldThrow('navigator.webkitGetUserMedia({video: true}, Infinity, emptyFunction)'); |
| shouldThrow('navigator.webkitGetUserMedia({video: true}, emptyFunction, "video")'); |
| shouldThrow('navigator.webkitGetUserMedia({video: true}, emptyFunction, -Infinity)'); |
| shouldThrow('navigator.webkitGetUserMedia({video: true}, emptyFunction, 42)'); |
| shouldThrow('navigator.webkitGetUserMedia({video: true}, emptyFunction, Infinity)'); |
| shouldThrow('navigator.webkitGetUserMedia({video: true}, emptyFunction, null)'); |
| shouldThrow('navigator.webkitGetUserMedia({video: true}, emptyFunction, true)'); |
| shouldThrow('navigator.webkitGetUserMedia({video: true}, emptyFunction, undefined)'); |
| shouldThrow('navigator.webkitGetUserMedia({video: true}, emptyFunction, {})'); |
| shouldThrow('navigator.webkitGetUserMedia({video: true}, null, emptyFunction)'); |
| shouldThrow('navigator.webkitGetUserMedia({video: true}, true, emptyFunction)'); |
| shouldThrow('navigator.webkitGetUserMedia({video: true}, undefined, emptyFunction)'); |
| shouldThrow('navigator.webkitGetUserMedia({video: true}, {}, emptyFunction)'); |
| |
| </script> |
| </body> |
| </html> |