<body>
Ensure that a form submission to a different frame is not cancelled if the origin frame navigates immediately thereafter. SUCCESS should appear in both iframes.
<script>
if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.dumpChildFrames();
    testRunner.waitUntilDone();
}

var childrenDone = 0;
function childDone() {
    childrenDone++;
    if (childrenDone >= 2 && window.testRunner)
        testRunner.notifyDone();
}
</script>
<iframe id="formframe" name="formframe"></iframe>
<iframe name="navframe" src="resources/submit-in-sibling-frame.html"></iframe>
</body>
</html>
