Bug 456262 - Attribute nodes don't preserve wrappers, r+sr=jst

This commit is contained in:
Olli Pettay 2008-10-13 19:33:27 +03:00
parent 3b22c3d551
commit 1b40f24812
3 changed files with 47 additions and 3 deletions

View File

@ -212,6 +212,7 @@ _TEST_FILES = test_bug5141.html \
file_bug391728.html \
test_bug454325.html \
file_bug391728_2.html \
test_bug456262.html \
test_bug368972.html \
test_bug450160.html \
test_bug454326.html \

View File

@ -0,0 +1,43 @@
<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=456262
-->
<head>
<title>Test for Bug 456262</title>
<script type="application/javascript" src="/MochiKit/MochiKit.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=456262">Mozilla Bug 456262</a>
<p id="display"></p>
<div id="content" style="display: none">
</div>
<pre id="test">
<script type="application/javascript">
/** Test for Bug 456262 **/
function runTest() {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
document.expando = document;
document.documentElement.expando = document;
document.documentElement.setAttribute("foo", "bar");
document.documentElement.getAttributeNode("foo").expando = document;
window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsIDOMWindowUtils)
.garbageCollect();
ok(document.expando, "Should have preserved the expando!");
ok(document.documentElement.expando, "Should have preserved the expando!");
ok(document.documentElement.getAttributeNode('foo').expando,
"Should have preserved the expando!");
}
runTest();
</script>
</pre>
</body>
</html>

View File

@ -625,7 +625,7 @@ static nsDOMClassInfoData sClassInfoData[] = {
NS_DEFINE_CLASSINFO_DATA(Element, nsElementSH,
ELEMENT_SCRIPTABLE_FLAGS)
NS_DEFINE_CLASSINFO_DATA(Attr, nsAttributeSH,
DOM_DEFAULT_SCRIPTABLE_FLAGS)
NODE_SCRIPTABLE_FLAGS)
NS_DEFINE_CLASSINFO_DATA(Text, nsNodeSH,
NODE_SCRIPTABLE_FLAGS)
NS_DEFINE_CLASSINFO_DATA(Comment, nsNodeSH,
@ -4186,8 +4186,8 @@ nsDOMClassInfo::PreserveNodeWrapper(nsIXPConnectWrappedNative *aWrapper)
}
if (doc) {
nsCOMPtr<nsIContent> content(do_QueryInterface(node));
doc->AddReference(content, aWrapper);
nsCOMPtr<nsINode> n(do_QueryInterface(node));
doc->AddReference(n, aWrapper);
}
return NS_OK;
}