Chromium Code Reviews| Index: LayoutTests/http/tests/xmlhttprequest/post-formdata.html |
| diff --git a/LayoutTests/http/tests/xmlhttprequest/post-formdata.html b/LayoutTests/http/tests/xmlhttprequest/post-formdata.html |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..1f7b081840b92e79137efa83a539794ac1fdde74 |
| --- /dev/null |
| +++ b/LayoutTests/http/tests/xmlhttprequest/post-formdata.html |
| @@ -0,0 +1,91 @@ |
| +<!DOCTYPE html> |
| + |
| +<script src="/js-test-resources/js-test.js"></script> |
| +<script> |
| + description("Test verifies that FormData is sent correctly when using " + |
| + "<a href='http://www.w3.org/TR/XMLHttpRequest/#the-send-method'>XMLHttpRequest asynchronously.</a>"); |
| + |
| + var xhrFormDataTestUrl = '/xmlhttprequest/resources/multipart-post-echo.php'; |
| + var xhrFormDataTestCases = [{ |
| + data: { string: 'string value' }, |
| + result: "string=string value" |
| + }, { |
| + data: { bareBlob: new Blob(['blob-value']) }, |
| + result: 'bareBlob=blob:application/octet-stream:blob-value' |
| + }, { |
| + data: { mimeBlob: new Blob(['blob-value'], { type: 'text/html' }) }, |
| + result: 'mimeBlob=blob:text/html:blob-value' |
| + }, { |
| + data: { |
| + namedBlob: { |
| + value: new Blob(['blob-value']), |
| + fileName: 'blob-file.txt' |
| + } |
| + }, |
| + result: 'namedBlob=blob-file.txt:application/octet-stream:blob-value' |
| + }, { |
| + data: { bareFile: new File(['file-value'], 'file-name.txt') }, |
| + result: 'bareFile=file-name.txt:application/octet-stream:file-value' |
| + }, { |
| + data: { |
| + mimeFile: new File(['file-value'], 'file-name.html', { type: 'text/html' }) |
| + }, |
| + result: 'mimeFile=file-name.html:text/html:file-value' |
| + }, { |
| + data: { |
| + renamedFile: { |
| + value: new File(['file-value'], 'file-name.html', { type: 'text/html' }), |
| + fileName: 'file-name-override.html' |
| + } |
| + }, |
| + result: 'renamedFile=file-name-override.html:text/html:file-value' |
| + }]; |
| + |
| + var xhr; |
| + var expectedMimeType; |
| + window.jsTestIsAsync = true; |
| + var asyncTestCase = 0; |
| + |
| + function runNextAsyncTest() { |
| + asyncTestCase++; |
| + runAsyncTests(); |
| + } |
| + |
| + function reportResult(e) { |
| + var testCase = xhrFormDataTestCases[asyncTestCase]; |
| + if (xhr.status === 200) { |
| + echoResult = xhr.response; |
| + shouldBeEqualToString("echoResult", testCase.result); |
| + } else { |
| + testFailed("Unknown error"); |
| + } |
| + |
| + runNextAsyncTest(); |
| + } |
| + |
| + function runAsyncTests() { |
| + if (asyncTestCase >= xhrFormDataTestCases.length) { |
| + finishJSTest(); |
| + return; |
| + } else { |
|
kinuko
2013/11/14 05:41:06
nit: no need of else as we return in the former ca
pwnall-personal
2013/11/14 14:31:19
Done.
|
| + var testCase = xhrFormDataTestCases[asyncTestCase]; |
| + var formData = new FormData(); |
| + for (var fieldName in testCase.data) { |
| + fieldValue = testCase.data[fieldName]; |
| + if (fieldValue.constructor === Object) { |
| + formData.append(fieldName, fieldValue.value, fieldValue.fileName); |
| + } else { |
| + formData.append(fieldName, fieldValue); |
|
kinuko
2013/11/14 05:41:06
nit: indent looks off?
pwnall-personal
2013/11/14 14:31:19
Done.
I also removed the brackets, since both bran
|
| + } |
| + } |
| + |
| + xhr = new XMLHttpRequest(); |
| + xhr.onloadend = reportResult; |
| + xhr.open("POST", xhrFormDataTestUrl, true); |
| + xhr.send(formData); |
| + } |
| + } |
| + |
| + runAsyncTests(); |
| + |
| +</script> |