Bug 529859. Need to submit empty file inputs too. r=smaug

This commit is contained in:
Boris Zbarsky 2009-11-19 15:58:46 -05:00
parent 85e02cc64e
commit 1ccc263d2e
3 changed files with 53 additions and 0 deletions

View File

@ -2711,6 +2711,15 @@ nsHTMLInputElement::SubmitNamesValues(nsIFormSubmission* aFormSubmission,
}
}
if (files.Count() == 0) {
// If no file was selected, pretend we had an empty file with an
// empty filename.
aFormSubmission->AddNameFilePair(this, name, EmptyString(), nsnull,
NS_LITERAL_CSTRING("application/octet-stream"),
PR_FALSE);
}
return NS_OK;
}

View File

@ -142,6 +142,7 @@ _TEST_FILES = test_bug589.html \
test_bug523771.html \
form_submit_server.sjs \
test_bug529819.html \
test_bug529859.html \
$(NULL)
libs:: $(_TEST_FILES)

View File

@ -0,0 +1,43 @@
<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=529859
-->
<head>
<title>Test for Bug 529859</title>
<script type="application/javascript" src="/MochiKit/packed.js"></script>
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=529859">Mozilla Bug 529859</a>
<div id="content">
<iframe name="target_iframe" id="target_iframe"></iframe>
<form action="form_submit_server.sjs" target="target_iframe" id="form"
method="POST" enctype="multipart/form-data">
<input id="emptyFileInput" name="emptyFileInput" type="file">
</form>
</div>
<pre id="test">
<script type="application/javascript">
/** Test for Bug 529859 **/
SimpleTest.waitForExplicitFinish();
addLoadEvent(function() {
$("target_iframe").onload = function() {
var response = JSON.parse(this.contentDocument.documentElement.textContent);
is(response.length, 1, "Unexpected number of inputs");
is(response[0].headers["Content-Disposition"],
"form-data; name=\"emptyFileInput\"; filename=\"\"",
"Incorrect content-disposition");
is(response[0].headers["Content-Type"], "application/octet-stream",
"Unexpected content-type");
SimpleTest.finish();
}
$("form").submit();
});
</script>
</pre>
</body>
</html>