<script>

var frameIsLoaded = false;
var testIsStarted = false;

function startTest()
{
    if (window.testRunner) {
        testRunner.dumpAsText();
        testRunner.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.testRunner)
        testRunner.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>
