Bug 564330 - Throw an exception for real when an E4X object is passed to a variant through a quickstub. r=peterv

--HG--
extra : rebase_source : f3ac8865985737756006b6843a5bb455656c07ea
This commit is contained in:
Blake Kaplan 2010-05-13 14:35:01 -07:00
parent 4fc2ef05d4
commit 323d7745be
3 changed files with 43 additions and 2 deletions

View File

@ -536,8 +536,10 @@ def writeArgumentUnboxing(f, i, name, type, haveCcx, optional, rvdeclared,
template = (
" nsCOMPtr<nsIVariant> ${name}(already_AddRefed<nsIVariant>("
"XPCVariant::newVariant(ccx, ${argVal})));\n"
" if (!${name})\n"
" return JS_FALSE;\n")
" if (!${name}) {\n"
" xpc_qsThrowBadArgWithCcx(ccx, NS_ERROR_XPC_BAD_CONVERT_JS, %d);\n"
" return JS_FALSE;\n"
" }") % i
f.write(substitute(template, params))
return rvdeclared
elif type.name == 'nsIAtom':

View File

@ -72,6 +72,7 @@ _TEST_FILES = bug500931_helper.html \
test_bug517163.html \
test_bug553407.html \
test_bug560351.html \
test_bug564330.html \
test_cows.html \
test_frameWrapping.html \
$(NULL)

View File

@ -0,0 +1,38 @@
<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=564330
-->
<head>
<title>Test for Bug 560351</title>
<script type="application/javascript" src="/MochiKit/packed.js"></script>
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=564330">Mozilla Bug 564330</a>
<p id="display"></p>
<div id="content" style="display: none">
</div>
<pre id="test">
<script type="application/javascript">
/** Test for Bug 564330 **/
var pass = false;
try {
document.createElement("span").setUserData("x", <y/>, null);
} catch (e) {
pass = true;
}
</script>
<script>
ok(pass, "pass was set to true");
</script>
</pre>
</body>
</html>