<p>This test checks for a NULL document crash that can happen when calling
XMLHttpRequest.open. If the test passes, you'll see a PASS message below.</p>
<hr>
<pre id="pre"></pre>
<iframe name="iframe" style="visibility:hidden" src="does-not-exist.bogus"></iframe> <!-- forces asynchronous load -->
<script>
<!--
function log(s)
{
    document.getElementById("pre").appendChild(document.createTextNode(s));
}

function test()
{
    var request = new XMLHttpRequest();
    request.onreadystatechange = function(event) { if (event.target.readyState == 1) parent.pass(); };
    request.open("GET", "about:blank");
}

function pass()
{
    log("PASS: You didn't crash.");

    if (window.layoutTestController)
        layoutTestController.notifyDone();
}

function main()
{
    if (window.layoutTestController) {
        layoutTestController.dumpAsText();
        layoutTestController.waitUntilDone();
    }    
    
    // setTimeout forces execution in the context of the frame
    frames[0].setTimeout(test, 0);
}

main();
-->
</script>
