OLD | NEW |
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <html> | |
3 <head> | |
4 <script src="/js-test-resources/js-test.js"></script> | |
5 </head> | |
6 <body> | |
7 <script src="post-blob-content-type-tests.js"></script> | |
8 <script type="text/javascript"> | |
9 description("Test verifies that content MIME type is set correctly " + | |
10 "when Blob is sent using " + | |
11 "<a href='http://www.w3.org/TR/XMLHttpRequest/#the-send-method'>
XMLHttpRequest asynchronously.</a>"); | |
12 | 2 |
13 var xhr; | 3 <script src="/js-test-resources/js-test.js"></script> |
14 var expectedMimeType; | 4 <script src="post-blob-content-type-tests.js"></script> |
15 window.jsTestIsAsync = true; | 5 <script type="text/javascript"> |
16 var asyncTestCase = 0; | 6 description("Test verifies that content MIME type is set correctly " + |
| 7 "when Blob is sent using " + |
| 8 "<a href='http://www.w3.org/TR/XMLHttpRequest/#the-send-method'>XM
LHttpRequest asynchronously.</a>"); |
17 | 9 |
18 function runNextAsyncTest() { | 10 var xhr; |
19 asyncTestCase++; | 11 var expectedMimeType; |
20 runAsyncTests(); | 12 window.jsTestIsAsync = true; |
21 } | 13 var asyncTestCase = 0; |
22 | 14 |
23 function reportResult(e) { | 15 function runNextAsyncTest() { |
24 if (xhr.status === 200) { | 16 asyncTestCase++; |
25 expectedMimeType = JSON.parse(xhr.response)['content-type'] || ""; | 17 runAsyncTests(); |
26 shouldBeEqualToString("expectedMimeType", xhrBlobTestCases[asyncTest
Case].expectedMime); | 18 } |
27 } else if (xhr.status === 0 && xhrBlobTestCases[asyncTestCase].shouldThr
ow){ | |
28 testPassed("Cross-origin request without CORS headers should fail.")
; | |
29 } else { | |
30 testFailed("Unknown error"); | |
31 } | |
32 | 19 |
33 runNextAsyncTest(); | 20 function reportResult(e) { |
34 } | 21 var testCase = xhrBlobTestCases[asyncTestCase]; |
| 22 if (xhr.status === 200) { |
| 23 postedMimeType = JSON.parse(xhr.response)['content-type'] || ""; |
| 24 shouldBeEqualToString("postedMimeType", testCase.expectedMime); |
| 25 } else if (xhr.status === 0 && testCase.shouldThrow){ |
| 26 testPassed("Cross-origin request without CORS headers should fail."); |
| 27 } else { |
| 28 testFailed("Unknown error"); |
| 29 } |
35 | 30 |
36 function runAsyncTests() { | 31 runNextAsyncTest(); |
37 if (asyncTestCase >= xhrBlobTestCases.length) { | 32 } |
38 finishJSTest(); | |
39 return; | |
40 } else { | |
41 var mime = xhrBlobTestCases[asyncTestCase].mime; | |
42 var url = xhrBlobTestCases[asyncTestCase].url !== undefined ? xhrBlo
bTestCases[asyncTestCase].url + xhrBlobTestUrl : xhrBlobTestUrl; | |
43 url += xhrBlobTestCases[asyncTestCase].allowOrigin || ""; | |
44 if (xhrBlobTestCases[asyncTestCase].shouldThrow !== undefined) { | |
45 try { | |
46 testBlobContentTypeAsync(url, mime); | |
47 } catch (e) { | |
48 testPassed("Exception should be thrown.") | |
49 runNextAsyncTest(); | |
50 } | |
51 } else | |
52 testBlobContentTypeAsync(url, mime); | |
53 } | |
54 } | |
55 | 33 |
56 function testBlobContentTypeAsync(url, mimeType) { | 34 function runAsyncTests() { |
57 var blob; | 35 if (asyncTestCase >= xhrBlobTestCases.length) { |
58 if (mimeType !== "") | 36 finishJSTest(); |
59 blob = new Blob(["Test content"], {type: mimeType}); | 37 return; |
60 else | 38 } else { |
61 blob = new Blob(["Test content"]); | 39 var testCase = xhrBlobTestCases[asyncTestCase]; |
| 40 var mime = testCase.mime; |
| 41 var file = testCase.file; |
| 42 var url = testCase.url !== undefined ? testCase.url + xhrBlobTestUrl :
xhrBlobTestUrl; |
| 43 url += testCase.allowOrigin || ""; |
| 44 if (testCase.shouldThrow !== undefined) { |
| 45 try { |
| 46 testBlobContentTypeAsync(url, mime, file); |
| 47 } catch (e) { |
| 48 testPassed("Exception should be thrown.") |
| 49 runNextAsyncTest(); |
| 50 } |
| 51 } else |
| 52 testBlobContentTypeAsync(url, mime); |
| 53 } |
| 54 } |
62 | 55 |
63 xhr = new XMLHttpRequest(); | 56 function testBlobContentTypeAsync(url, mimeType, fileName) { |
64 xhr.onloadend = reportResult; | 57 var blob; |
65 xhr.open("POST", url, true); | 58 if (fileName) { |
66 xhr.send(blob); | 59 if (mimeType !== "") |
67 } | 60 blob = new File(["Test content"], fileName, {type: mimeType}); |
| 61 else |
| 62 blob = new File(["Test content"], fileName); |
| 63 } else { |
| 64 if (mimeType !== "") |
| 65 blob = new Blob(["Test content"], {type: mimeType}); |
| 66 else |
| 67 blob = new Blob(["Test content"]); |
| 68 } |
68 | 69 |
69 runAsyncTests(); | 70 xhr = new XMLHttpRequest(); |
| 71 xhr.onloadend = reportResult; |
| 72 xhr.open("POST", url, true); |
| 73 xhr.send(blob); |
| 74 } |
70 | 75 |
71 </script> | 76 runAsyncTests(); |
72 </body> | 77 |
73 </html> | 78 </script> |
OLD | NEW |