blob: 56760a6e3f18086073814f1a69da8fc6021bc9ae [file] [log] [blame]
<html><head>
<script>
if (window.testRunner)
testRunner.dumpAsText();
var types = [
XPathResult.ORDERED_NODE_ITERATOR_TYPE,
XPathResult.UNORDERED_NODE_ITERATOR_TYPE
];
function gc()
{
if (window.GCController)
return GCController.collect();
for (var i = 0; i < 10000; i++) { // > force garbage collection (FF requires about 9K allocations before a collect)
var s = new String("abc");
}
}
function test(type)
{
var doc = (new DOMParser).parseFromString("<html><body><span></span></body></html>", "text/xml");
doc.getElementsByTagName("span")[0].foo = "PASS";
var result = doc.evaluate("//span", doc.documentElement, null, type, null);
doc = 0;
gc();
var console = document.getElementById("console");
console.appendChild(document.createTextNode(result.iterateNext().foo));
console.appendChild(document.createElement("br"));
}
function tests()
{
while (types.length) {
test(types.pop());
}
}
</script>
</head>
<body onload="tests()">
<div> Test for bug <a href="https://bugs.webkit.org/show_bug.cgi?id=34231">34231</a>: Nodes in XPathResult should keep JS wrappers alive.</div>
<div> For this test to PASS you should see 2 PASS below.</div><br>
<div id="console"></div>
</body></html>