<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<title>Charsets and submitting forms</title>
</head>
<body>
<p>Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=10681">bug 10681</a>:
REGRESSION: Reproducible crash at Wikipedia</p>

<form method="post" action="?" name=f>
 <input type=hidden name=q value="&#x65;&#x301;"><br>
</form>
<script>
if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
}

if (document.URL.substring(0, 4) == "file") {

    if (document.URL.indexOf('?') == -1) {
        for (i=0; i < 15; ++i) {
            document.f.q.value += document.f.q.value;
        }
        document.f.submit();

    } else {
        <!-- no crash == success -->
        document.write("<p>SUCCESS</p>");
        
        if (window.testRunner)
            testRunner.notifyDone();
    }

} else {

    document.write("<p>This test doesn't work directly from bugzilla, please save it to a local file first.</p>");
}
</script>
</body>
</html>
