<script>

var frameIsLoaded = false;
var testIsStarted = false;

function startTest()
{
    if (window.layoutTestController) {
        layoutTestController.dumpAsText();
        layoutTestController.waitUntilDone();
    }

    testIsStarted = true;
    if (frameIsLoaded)
        frameLoaded();
}

function frameLoaded()
{
    if (!testIsStarted) {
        frameIsLoaded = true;
        return;
    }

    if (document.getElementById('frame').contentWindow.location != "about:blank") {
        document.getElementById("message").firstChild.data = "FAILED: Subframe had the wrong location";
        return;
    }

    document.getElementById("message").firstChild.data = "PASSED: If we successfully got here without an assertion or crash, all is well.";

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

</script>
<body onload="startTest()">
<p id="message">TEST DID NOT RUN YET</p>
<iframe src="resources/submit-form-while-parsing-subframe.html" id="frame" onload="frameLoaded()"></iframe>
</body>
