| <!doctype html> |
| <title>XMLHttpRequest: overrideMimeType() and responseType = "blob"</title> |
| <meta name="timeout" content="long"> |
| <meta charset="utf-8"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <div id="log"></div> |
| <script> |
| async_test(t => { |
| const client = new XMLHttpRequest(); |
| client.onload = t.step_func_done(() => { |
| assert_equals(client.getResponseHeader("Content-Type"), ""); |
| assert_equals(client.response.type, "text/xml"); |
| }); |
| client.open("GET", "resources/status.py"); |
| client.responseType = "blob"; |
| client.send(); |
| }, "Use text/xml as fallback MIME type"); |
| |
| async_test(t => { |
| const client = new XMLHttpRequest(); |
| client.onload = t.step_func_done(() => { |
| assert_equals(client.getResponseHeader("Content-Type"), ""); |
| assert_equals(client.response.type, "text/xml"); |
| }) |
| client.open("GET", "resources/status.py?content=thisshouldnotmakeadifferencebutdoes"); |
| client.responseType = "blob"; |
| client.send(); |
| }, "Use text/xml as fallback MIME type, 2"); |
| |
| promise_test(() => { |
| // Don't load generated-mime-types.json as sending them all over the network would be prohibitive |
| return fetch("../mimesniff/mime-types/resources/mime-types.json").then(res => res.json()).then(runTests); |
| }, "Loading data…"); |
| |
| function runTests(tests) { |
| let index = 0; |
| tests.forEach((val) => { |
| if(typeof val === "string") { |
| return; |
| } |
| index++; |
| async_test(t => { |
| const client = new XMLHttpRequest(), |
| expectedOutput = val.output !== null ? val.output : "application/octet-stream"; |
| client.onload = t.step_func_done(() => { |
| assert_equals(client.getResponseHeader("Content-Type"), ""); |
| assert_equals(client.response.type, expectedOutput); |
| }); |
| client.open("GET", "resources/status.py"); |
| client.responseType = "blob"; |
| client.overrideMimeType(val.input); |
| client.send(); |
| }, index + ") MIME types need to be parsed and serialized: " + val.input); |
| }); |
| } |
| </script> |