<html>
<head>
<script>
function print(message, color) 
{
    var paragraph = document.createElement("div");
    paragraph.appendChild(document.createTextNode(message));
    paragraph.style.fontFamily = "monospace";
    if (color)
        paragraph.style.color = color;
    document.getElementById("console").appendChild(paragraph);
}

function test() 
{
    if (window.layoutTestController)
        layoutTestController.dumpAsText();
        
    try {
        document.importNode(null);
    } catch(e) {
        print("caught exception: " + e);
    } finally {
        print("PASS: importNode(null) didn't crash", "green");
    }
}
</script>
</head>
<body onload="test();">
<p>This page tests calling document.importNode(null). If it passes, you'll 
   see a "PASS" message below.</p>
<hr>
<div id='console'></div>
</body>
</html>
