<html>
    <head>
        <script>

            function runTest()
            {
                if (window.testRunner)
                    testRunner.waitUntilDone();

                // Not dumping as text since the DumpRenderTree does not dump the text content of child frames.                
                var button = document.getElementById('blankButton');
                button.click();
            }

            function subframeLoaded()
            {
                if (document.getElementsByTagName('iframe')[0].contentDocument.URL == "about:blank")
                    return;
                if (window.testRunner)
                    testRunner.notifyDone();
            }

        </script>
    </head>
    <body onload="runTest()">
        <form action="resources/success.txt" method="GET" target="blankFrame">
            <input type="submit" value="form" id="blankButton">
        </form>
        <div>This tests Targetted frame submission works.  If the test is successful, the text "SUCCESS" should be shown in the iframe below.</div>
        <iframe src="about:blank" name="blankFrame" onload="subframeLoaded()"></iframe>
    </body>
</html>
