зеркало из https://github.com/mozilla/gecko-dev.git
Bug 795367 - Establish makefiles/directories for gUM/webrtc test automation and add a simple gUM error test. r=jesup
This commit is contained in:
Родитель
35f7597dc6
Коммит
c6cbf6abb3
|
@ -22,6 +22,7 @@ DIRS += \
|
|||
whatwg \
|
||||
geolocation \
|
||||
localstorage \
|
||||
media \
|
||||
orientation \
|
||||
sessionstorage \
|
||||
storageevent \
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
DEPTH = @DEPTH@
|
||||
topsrcdir = @top_srcdir@
|
||||
srcdir = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
relativesrcdir = @relativesrcdir@
|
||||
|
||||
include $(DEPTH)/config/autoconf.mk
|
||||
|
||||
MOCHITEST_FILES = \
|
||||
test_getUserMedia_exceptions.html \
|
||||
head.js \
|
||||
$(NULL)
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
|
@ -0,0 +1,22 @@
|
|||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
var Cc = SpecialPowers.Cc;
|
||||
var Ci = SpecialPowers.Ci;
|
||||
var Cr = SpecialPowers.Cr;
|
||||
|
||||
/**
|
||||
* Setup any Mochitest for WebRTC by enabling the preference for
|
||||
* peer connections. As by bug 797979 it will also enable mozGetUserMedia().
|
||||
* Additionally, we disable the permissions prompt for these mochitests.
|
||||
*
|
||||
* @param {Function} aCallback Test method to execute after initialization
|
||||
*/
|
||||
function runTest(aCallback) {
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
|
||||
SpecialPowers.pushPrefEnv({'set': [['media.peerconnection.enabled', true],
|
||||
['media.navigator.permission.disabled', true]]},
|
||||
aCallback);
|
||||
}
|
|
@ -0,0 +1,86 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<!--
|
||||
https://bugzilla.mozilla.org/show_bug.cgi?id=795367
|
||||
-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Test mozGetUserMedia Exceptions</title>
|
||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
||||
<script type="application/javascript" src="head.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=795367">Test mozGetUserMedia Exceptions</a>
|
||||
<p id="display"></p>
|
||||
<div id="content" style="display: none">
|
||||
|
||||
</div>
|
||||
<pre id="test">
|
||||
<script type="application/javascript">
|
||||
|
||||
/**
|
||||
These tests verify that the appropriate exception is thrown when incorrect
|
||||
values are provided to the immediate mozGetUserMedia call.
|
||||
*/
|
||||
var exceptionTests = [
|
||||
// Each test here verifies that a caller is required to have all
|
||||
// three arguments in order to call mozGetUserMedia
|
||||
{ params: undefined,
|
||||
error: Cr.NS_ERROR_XPC_NOT_ENOUGH_ARGS,
|
||||
message: "no arguments specified" },
|
||||
{ params: [{video: true, fake: true}],
|
||||
error: Cr.NS_ERROR_XPC_NOT_ENOUGH_ARGS,
|
||||
message: "one argument specified" },
|
||||
{ params: [{video: true, fake: true}, unexpectedCall],
|
||||
error: Cr.NS_ERROR_XPC_NOT_ENOUGH_ARGS,
|
||||
message: "two arguments specified" },
|
||||
|
||||
// Each test here verifies that providing an incorret object
|
||||
// type to any mozGetUserMedia parameter should throw
|
||||
// the correct exception specified
|
||||
{ params: [1, unexpectedCall, unexpectedCall],
|
||||
error: Cr.NS_ERROR_XPC_BAD_CONVERT_JS,
|
||||
message: "wrong object type as first parameter" },
|
||||
{ params: [{video: true, fake: true}, 1, unexpectedCall],
|
||||
error: Cr.NS_ERROR_XPC_BAD_CONVERT_JS,
|
||||
message: "wrong object type as second parameter" },
|
||||
{ params: [{video: true, fake: true}, unexpectedCall, 1],
|
||||
error: Cr.NS_ERROR_XPC_BAD_CONVERT_JS,
|
||||
message: "wrong object type as third parameter" }
|
||||
];
|
||||
|
||||
/**
|
||||
* A callback function that is only called if a particular
|
||||
* exception was not thrown, resulting in the test failing.
|
||||
*
|
||||
* @param {MediaStream} argument ignored
|
||||
*/
|
||||
function unexpectedCall(obj) {
|
||||
ok(false, "Callback should not have been called");
|
||||
}
|
||||
|
||||
/**
|
||||
* Starts the test run by running through each exception
|
||||
* test by verifying that the correct exception type specified
|
||||
* is thrown on the mozGetUserMedia call with the parameters
|
||||
* specified.
|
||||
*/
|
||||
runTest(function () {
|
||||
exceptionTests.forEach(function (test) {
|
||||
var exception = false;
|
||||
try {
|
||||
navigator.mozGetUserMedia.apply(navigator, test.params);
|
||||
} catch (e) {
|
||||
exception = (e.result === test.error);
|
||||
}
|
||||
ok(exception, "Exception for " + test.message);
|
||||
});
|
||||
|
||||
SimpleTest.finish();
|
||||
});
|
||||
|
||||
</script>
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
Загрузка…
Ссылка в новой задаче