<html>
<head>
<script src="../js/resources/js-test-pre.js"></script>
<script>
    if (window.layoutTestController) {
        layoutTestController.waitUntilDone();
        layoutTestController.dumpAsText();
    }

    var dummyResolverCalled = false;
    var foundNode;
    function dummyResolver() {
        dummyResolverCalled = true;
        return "http://www.w3.org/1999/xhtml";
    }

    function test() {
        var iframe = document.createElement("iframe");
        document.body.appendChild(iframe);
        var doc = iframe.contentWindow.document;
        doc.open();
        doc.write("<html><body><div></div></body></html>");
        doc.close();
        document.body.removeChild(iframe);
        foundNode = doc.evaluate("//dummyns:div", doc, dummyResolver, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;

        testPassed("Did not crash.");
        shouldBeTrue("dummyResolverCalled");
        shouldBe("foundNode.toString()", "\"[object HTMLDivElement]\"");

        if (window.layoutTestController)
            layoutTestController.notifyDone();
    }
</script>
</head>
<body onload="test()">
<p>Ensure that using XPath namespace resolver with a detached iframe doesn't crash.</p>
<div id="console"></div>
</body>
</html>
