<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<title>Regression test for bug 5291</title>
</head>
<body>
                <form enctype="multipart/form-data" action="?" name=f>
                        <input type="hidden" name="hidden" value="I am hidden">
                        <input type="submit" value="press me">
                </form>
<script>
if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
}

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

    if (document.URL.indexOf('?') == -1) {

        document.f.submit();

    } else {

        if (document.URL.substring(document.URL.indexOf('?')+1, document.URL.length) == "hidden=I+am+hidden")
            document.write("<p>Success</p>");
        else
            document.write("<p>Failure</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>
