<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
  <head>
    <script src="../../resources/js-test-pre.js"></script>
    <script>

function run() {
    if (window.testRunner) {
        window.testRunner.dumpAsText();
        window.testRunner.waitUntilDone();
    }

    description('Submitting a GET form to &lt;about:blank&gt; should redirect the browser to &lt;about:blank?&gt;.');
    document.getElementById('form').submit();
}

var initialFrameLoaded = false;
var iframe;
function onFrameLoad()
{
    iframe = document.getElementById('iframe');
    if (!initialFrameLoaded) {
        shouldBe('iframe.contentDocument.URL', '"about:blank"');
        initialFrameLoaded = true;
        return;
    }

    shouldBe('iframe.contentDocument.URL', '"about:blank?"');
    isSuccessfullyParsed();
    if (window.testRunner)
        window.testRunner.notifyDone();
}
    </script>
  </head>
  <body onload="run();">
    <iframe id="iframe" name="iframe" onload="onFrameLoad();" style="display: none;"></iframe>
    <form id="form" action="about:blank" method="GET" target="iframe" style="display: none;"></form>
  </body>
</html>
