<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", window.location);
}

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

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

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

main();
-->
</script>
