| <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> |
| <html> |
| <head> |
| <script src="../../resources/js-test-pre.js"></script> |
| </head> |
| <body> |
| <p id="description"></p> |
| <div id="console"></div> |
| <script> |
| description("Tests getUserMedia."); |
| |
| function setUserMediaPermission(isGranted) { |
| if (window.testRunner) |
| testRunner.setUserMediaPermission(isGranted); |
| else |
| debug("This test can not be run without the testRunner"); |
| } |
| |
| var stream; |
| var errorArg; |
| |
| function error() { |
| testFailed('Error callback called.'); |
| finishJSTest(); |
| } |
| |
| function expectedError() { |
| testPassed('Error callback called.'); |
| } |
| |
| function gotStreamInError(s) { |
| testFailed('Stream generated.'); |
| finishJSTest(); |
| } |
| |
| function gotStream5(s) { |
| stream = s; |
| testPassed('Stream generated.'); |
| shouldBe('stream.getAudioTracks().length', '1'); |
| shouldBe('stream.getVideoTracks().length', '1'); |
| finishJSTest(); |
| } |
| |
| function error1(e) { |
| errorArg = e; |
| testPassed('Error callback called.'); |
| shouldBeEqualToString('errorArg.name', 'OverconstrainedError'); |
| shouldBeEqualToString('errorArg.message', 'Invalid constraint'); |
| |
| shouldThrow("navigator.getUserMedia({audio:{volume:{exact:1}}, video:true}, gotStream5, 0);"); |
| shouldNotThrow("navigator.getUserMedia({audio:{volume:{exact:1}}, video:true}, gotStream5, error);"); |
| } |
| |
| function gotStream4(s) { |
| stream = s; |
| testPassed('Stream generated.'); |
| shouldBe('stream.getAudioTracks().length', '1'); |
| shouldBe('stream.getVideoTracks().length', '1'); |
| |
| shouldThrow("navigator.getUserMedia({audio:true, video:{width:{exact:11}}}, gotStreamInError, null);"); |
| shouldNotThrow("navigator.getUserMedia({audio:true, video:{width:{exact:11}}}, gotStreamInError, error1);"); |
| } |
| |
| function gotStream3(s) { |
| stream = s; |
| testPassed('Stream generated.'); |
| shouldBe('stream.getAudioTracks().length', '1'); |
| shouldBe('stream.getVideoTracks().length', '1'); |
| |
| shouldThrow("navigator.getUserMedia({audio:{}, video:true}, gotStream4, null);"); |
| shouldNotThrow("navigator.getUserMedia({audio:{}, video:true}, gotStream4, error);"); |
| } |
| |
| function gotStream2(s) { |
| stream = s; |
| testPassed('Stream generated.'); |
| shouldBe('stream.getAudioTracks().length', '0'); |
| shouldBe('stream.getVideoTracks().length', '1'); |
| |
| shouldThrow("navigator.getUserMedia({audio:true, video:true}, gotStream3, null);"); |
| shouldNotThrow("navigator.getUserMedia({audio:true, video:true}, gotStream3, error);"); |
| } |
| |
| function gotStream1(s) { |
| stream = s; |
| testPassed('Stream generated.'); |
| shouldBe('stream.getAudioTracks().length', '1'); |
| shouldBe('stream.getVideoTracks().length', '0'); |
| |
| shouldThrow("navigator.getUserMedia({video:true}, gotStream2, null);") |
| shouldNotThrow("navigator.getUserMedia({video:true}, gotStream2, error);") |
| } |
| |
| shouldNotThrow("navigator.getUserMedia({audio:false, video:false}, error, expectedError);") |
| shouldThrow("navigator.getUserMedia({audio:false, video:false}, error, null);") |
| |
| setUserMediaPermission(true); |
| shouldNotThrow("navigator.getUserMedia({audio:true}, gotStream1, error);"); |
| |
| window.jsTestIsAsync = true; |
| window.successfullyParsed = true; |
| </script> |
| <script src="../../resources/js-test-post.js"></script> |
| </body> |
| </html> |