<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.testRunner)
        testRunner.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>
