<html><head>
<script src="../../resources/gc.js"></script>
<script>
if (window.testRunner)
testRunner.dumpAsText();
// ANY_ORDERED_NODE_TYPE should be the last item in the array so that
// there is only one node that can match (thus it does not tie us to any
// specific ordering in the nodeset).
var types = [ XPathResult.FIRST_ORDERED_NODE_TYPE, XPathResult.ANY_UNORDERED_NODE_TYPE ];
function test(type)
{
var result;
function initialize() {
document.getElementsByTagName("span")[0].foo = "PASS";
result = document.evaluate("//span", document.documentElement, null, type, null);
document.body.removeChild(document.getElementsByTagName("span")[0]);
}
// Do initialization work in an inner function to avoid references
// to objects remaining live on this function's stack frame
// (http://crbug.com/595672/).
initialize();
gc();
var console = document.getElementById("console");
console.appendChild(document.createTextNode(result.singleNodeValue.foo));
console.appendChild(document.createElement("br"));
}
function tests()
{
while (types.length) {
test(types.pop());
}
}
</script>
</head>
<body onload="tests()">
<span></span>
<span></span>
<div> Test for bug <a href="https://bugs.webkit.org/show_bug.cgi?id=34231">34231</a>: Nodes in XPath result snapshots 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>