<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
    <script>
    function log(s)
    {
        var logDiv = document.getElementById("log");
        logDiv.appendChild(document.createTextNode(s));
        logDiv.appendChild(document.createElement('br'));
    }

    function matches(node, clonedNode, passedMessage)
    {
        if (node.localName === clonedNode.localName && node.prefix === clonedNode.prefix && node.namespaceURI === clonedNode.namespaceURI && node.nodeName === clonedNode.nodeName)
            log("PASSED: " + passedMessage);
        else
            log("FAILED");
    }

    function test()
    {
        if (window.testRunner)
            testRunner.dumpAsText();

        var xmlDoc = document.implementation.createDocument("http://www.example.com", "foo:bar", null);

        var xmlNode = xmlDoc.createElement("foo:bar");
        var clonedXMLNode = xmlNode.cloneNode(false);  // WebKit crashes.
        var htmlNode = document.getElementById('log');
        var clonedHTMLNode = htmlNode.cloneNode(false);

        matches(xmlNode, clonedXMLNode, "Cloned XML node matches the original");
        matches(htmlNode, clonedHTMLNode, "Cloned HTML node matches the original");
    }
    </script>
</head>
<body onload="test()">
<p> Test for bug Bug <a href="https://bugs.webkit.org/show_bug.cgi?id=23956">23956</a>: Safari crashes when cloneNode fails (cloning a XML element with an invalid nodeName)</p>
<p> For this test to pass, it should not crash and you should see PASSED twice.</p>
<div id='log'/>
</body>
</html>
