<html><head>
    <script>
        if (window.layoutTestController)
            layoutTestController.dumpAsText();

        var types = [ XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
                      XPathResult.ORDERED_NODE_SNAPSHOT_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 result = document.evaluate("//div", document.documentElement, null, type, null);
            result.snapshotItem(0).foo = "PASS";
            document.body.removeChild(result.snapshotItem(0));
            gc();
            var console = document.getElementById("console");
            console.appendChild(document.createTextNode(result.snapshotItem(0).foo));
            console.appendChild(document.createElement("br"));
        }

        function tests()
        {
            while (types.length) {
                test(types.pop());
            }
        }
    </script>
</head>
<body onload="tests()">
<div></div>
<div></div>
<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>
