| <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> |