mirror of
https://github.com/classilla/tenfourfox.git
synced 2024-11-03 19:05:35 +00:00
135 lines
5.3 KiB
HTML
135 lines
5.3 KiB
HTML
|
<!DOCTYPE HTML>
|
||
|
<html>
|
||
|
<!--
|
||
|
https://bugzilla.mozilla.org/show_bug.cgi?id=1107592
|
||
|
-->
|
||
|
<head>
|
||
|
<meta charset="utf-8">
|
||
|
<title>Test for Bug 1107592</title>
|
||
|
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
||
|
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
||
|
<script type="application/javascript">
|
||
|
|
||
|
/** Test for Bug 1107592 **/
|
||
|
|
||
|
SimpleTest.waitForExplicitFinish();
|
||
|
|
||
|
function checkExn(lineNumber, name, message, code, filename, testNumber, stack, exn) {
|
||
|
is(exn.lineNumber, lineNumber,
|
||
|
"Should have the right line number in test " + testNumber);
|
||
|
is(exn.name, name,
|
||
|
"Should have the right exception name in test " + testNumber);
|
||
|
is("filename" in exn ? exn.filename : exn.fileName, filename,
|
||
|
"Should have the right file name in test " + testNumber);
|
||
|
is(exn.message, message,
|
||
|
"Should have the right message in test " + testNumber);
|
||
|
is(exn.code, code, "Should have the right .code in test " + testNumber);
|
||
|
if (message === "") {
|
||
|
is(exn.name, "NS_ERROR_UNEXPECTED",
|
||
|
"Should have one of our synthetic exceptions in test " + testNumber);
|
||
|
}
|
||
|
is(exn.stack, stack, "Should have the right stack in test " + testNumber);
|
||
|
}
|
||
|
|
||
|
function ensurePromiseFail(testNumber, value) {
|
||
|
ok(false, "Test " + testNumber + " should not have a fulfilled promise");
|
||
|
}
|
||
|
|
||
|
function doTest() {
|
||
|
var t = new TestInterfaceJS();
|
||
|
/* Async parent frames from pushPrefEnv don't show up in e10s. */
|
||
|
var isE10S = !SpecialPowers.isMainProcess();
|
||
|
var asyncStack = SpecialPowers.getBoolPref("javascript.options.asyncstack");
|
||
|
var ourFile = location.href;
|
||
|
var parentFrame = (asyncStack && !isE10S) ? `Async*@${ourFile}:121:1
|
||
|
` : "";
|
||
|
|
||
|
Promise.all([
|
||
|
t.testPromiseWithThrowingChromePromiseInit().then(
|
||
|
ensurePromiseFail.bind(null, 1),
|
||
|
checkExn.bind(null, 48, "NS_ERROR_UNEXPECTED", "", undefined,
|
||
|
ourFile, 1,
|
||
|
`doTest@${ourFile}:48:7
|
||
|
` +
|
||
|
parentFrame)),
|
||
|
t.testPromiseWithThrowingContentPromiseInit(function() {
|
||
|
thereIsNoSuchContentFunction1();
|
||
|
}).then(
|
||
|
ensurePromiseFail.bind(null, 2),
|
||
|
checkExn.bind(null, 56, "ReferenceError",
|
||
|
"thereIsNoSuchContentFunction1 is not defined",
|
||
|
undefined, ourFile, 2,
|
||
|
`doTest/<@${ourFile}:56:11
|
||
|
doTest@${ourFile}:55:7
|
||
|
` +
|
||
|
parentFrame)),
|
||
|
t.testPromiseWithThrowingChromeThenFunction().then(
|
||
|
ensurePromiseFail.bind(null, 3),
|
||
|
checkExn.bind(null, 0, "NS_ERROR_UNEXPECTED", "", undefined, "", 3, "")),
|
||
|
t.testPromiseWithThrowingContentThenFunction(function() {
|
||
|
thereIsNoSuchContentFunction2();
|
||
|
}).then(
|
||
|
ensurePromiseFail.bind(null, 4),
|
||
|
checkExn.bind(null, 70, "ReferenceError",
|
||
|
"thereIsNoSuchContentFunction2 is not defined",
|
||
|
undefined, ourFile, 4,
|
||
|
`doTest/<@${ourFile}:70:11
|
||
|
` +
|
||
|
(asyncStack ? `Async*doTest@${ourFile}:69:7
|
||
|
` : "") +
|
||
|
parentFrame)),
|
||
|
t.testPromiseWithThrowingChromeThenable().then(
|
||
|
ensurePromiseFail.bind(null, 5),
|
||
|
checkExn.bind(null, 0, "NS_ERROR_UNEXPECTED", "", undefined, "", 5, "")),
|
||
|
t.testPromiseWithThrowingContentThenable({
|
||
|
then: function() { thereIsNoSuchContentFunction3(); }
|
||
|
}).then(
|
||
|
ensurePromiseFail.bind(null, 6),
|
||
|
checkExn.bind(null, 85, "ReferenceError",
|
||
|
"thereIsNoSuchContentFunction3 is not defined",
|
||
|
undefined, ourFile, 6,
|
||
|
`doTest/<.then@${ourFile}:85:32
|
||
|
`)),
|
||
|
t.testPromiseWithDOMExceptionThrowingPromiseInit().then(
|
||
|
ensurePromiseFail.bind(null, 7),
|
||
|
checkExn.bind(null, 93, "NotFoundError",
|
||
|
"We are a second DOMException",
|
||
|
DOMException.NOT_FOUND_ERR, ourFile, 7,
|
||
|
`doTest@${ourFile}:93:7
|
||
|
` +
|
||
|
parentFrame)),
|
||
|
t.testPromiseWithDOMExceptionThrowingThenFunction().then(
|
||
|
ensurePromiseFail.bind(null, 8),
|
||
|
checkExn.bind(null, asyncStack ? 101 : 0, "NetworkError",
|
||
|
"We are a third DOMException",
|
||
|
DOMException.NETWORK_ERR, asyncStack ? ourFile : "", 8,
|
||
|
(asyncStack ? `Async*doTest@${ourFile}:101:7
|
||
|
` +
|
||
|
parentFrame : ""))),
|
||
|
t.testPromiseWithDOMExceptionThrowingThenable().then(
|
||
|
ensurePromiseFail.bind(null, 9),
|
||
|
checkExn.bind(null, 0, "TypeMismatchError",
|
||
|
"We are a fourth DOMException",
|
||
|
DOMException.TYPE_MISMATCH_ERR, "", 9, "")),
|
||
|
]).then(SimpleTest.finish,
|
||
|
function() {
|
||
|
ok(false, "One of our catch statements totally failed");
|
||
|
SimpleTest.finish();
|
||
|
});
|
||
|
}
|
||
|
|
||
|
SpecialPowers.pushPrefEnv({set: [['dom.expose_test_interfaces', true]]},
|
||
|
doTest);
|
||
|
</script>
|
||
|
</head>
|
||
|
<body>
|
||
|
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1107592">Mozilla Bug 1107592</a>
|
||
|
<p id="display"></p>
|
||
|
<div id="content" style="display: none">
|
||
|
|
||
|
</div>
|
||
|
<pre id="test">
|
||
|
</pre>
|
||
|
</body>
|
||
|
</html>
|