mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-21 09:15:35 +00:00
f51e8c8dbd
Our nsFormSubmission and subclasses accepted a third filename argument to explicitly specify the filename. Since switching from nsIDOMBlob to File in Bug 1085283, we can read out the filename directly from the File. This simplifies the code, but introduces a change in the way Firefox submits form data to servers. Consider the code: var fd = new FormData(); fd.append("blob1", new Blob(["hi"]), ""); // explicit empty filename as third arg fd.append("file1", new File(["hi"], "")); // File's name is empty, no third arg. xhr.send(fd); Previously, the request body had filename="" in the first case, and filename="blob" in the second. This patch will change it to both cases result in filename="" This behaviour isn't exactly specced anywhere, nor in the HTML spec [1], nor in RFC 2388. In addition Blink (at least Chromium v40) has the same behaviour introduced by this patch. So shipping it seems ok to me. [1]: http://www.w3.org/html/wg/drafts/html/master/semantics.html#multipart/form-data-encoding-algorithm --HG-- extra : rebase_source : 6631e6900fe1a9b991c397b76e5be6b913715c5a
51 lines
1.4 KiB
HTML
51 lines
1.4 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<!--
|
|
https://bugzilla.mozilla.org/show_bug.cgi?id=690659
|
|
-->
|
|
<head>
|
|
<title>Test for Bug 690659 and 739173</title>
|
|
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
|
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
|
|
</head>
|
|
<body>
|
|
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=690659">Mozilla Bug 690659 & 739173</a>
|
|
<script type="text/javascript" src="./formData_test.js"></script>
|
|
<script type="text/javascript">
|
|
SimpleTest.waitForExplicitFinish();
|
|
|
|
function runMainThreadAndWorker() {
|
|
var mt = new Promise(function(resolve) {
|
|
runTest(resolve);
|
|
});
|
|
|
|
var worker;
|
|
var w = new Promise(function(resolve) {
|
|
worker = new Worker("formData_worker.js");
|
|
worker.onmessage = function(event) {
|
|
if (event.data.type == 'finish') {
|
|
resolve();
|
|
} else if (event.data.type == 'status') {
|
|
ok(event.data.status, event.data.msg);
|
|
} else if (event.data.type == 'todo') {
|
|
todo(event.data.status, event.data.msg);
|
|
}
|
|
}
|
|
|
|
worker.onerror = function(event) {
|
|
ok(false, "Worker had an error: " + event.message + " at " + event.lineno);
|
|
resolve();
|
|
};
|
|
|
|
worker.postMessage(true);
|
|
});
|
|
|
|
return Promise.all([mt, w]);
|
|
}
|
|
|
|
runMainThreadAndWorker().then(SimpleTest.finish);
|
|
</script>
|
|
</body>
|
|
</html>
|