| <!DOCTYPE html> |
| <meta charset="utf-8"> |
| <title>XMLHttpRequest.responseType</title> |
| <link rel="author" title="Mathias Bynens" href="http://mathiasbynens.be/"> |
| <link rel="author" title="Ms2ger" href="mailto:Ms2ger@gmail.com"> |
| <link rel="help" href="https://xhr.spec.whatwg.org/#the-responsetype-attribute"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <div id="log"></div> |
| <script> |
| test(function() { |
| var xhr = new XMLHttpRequest(); |
| assert_equals(xhr.responseType, ''); |
| }, 'Initial value of responseType'); |
| |
| var types = ['', 'json', 'document', 'arraybuffer', 'blob', 'text']; |
| types.forEach(function(type) { |
| test(function() { |
| var xhr = new XMLHttpRequest(); |
| xhr.responseType = type; |
| assert_equals(xhr.responseType, type); |
| }, 'Set responseType to ' + format_value(type) + ' when readyState is UNSENT.'); |
| |
| test(function() { |
| var xhr = new XMLHttpRequest(); |
| xhr.open('get', '/'); |
| xhr.responseType = type; |
| assert_equals(xhr.responseType, type); |
| }, 'Set responseType to ' + format_value(type) + ' when readyState is OPENED.'); |
| |
| async_test(function() { |
| var xhr = new XMLHttpRequest(); |
| xhr.open('get', '/'); |
| xhr.onreadystatechange = this.step_func(function() { |
| if (xhr.readyState === XMLHttpRequest.HEADERS_RECEIVED) { |
| xhr.responseType = type; |
| assert_equals(xhr.responseType, type); |
| this.done(); |
| } |
| }); |
| xhr.send(); |
| }, 'Set responseType to ' + format_value(type) + ' when readyState is HEADERS_RECEIVED.'); |
| |
| async_test(function() { |
| var xhr = new XMLHttpRequest(); |
| xhr.open('get', '/'); |
| xhr.onreadystatechange = this.step_func(function() { |
| if (xhr.readyState === XMLHttpRequest.LOADING) { |
| assert_throws("InvalidStateError", function() { |
| xhr.responseType = type; |
| }); |
| assert_equals(xhr.responseType, ""); |
| this.done(); |
| } |
| }); |
| xhr.send(); |
| }, 'Set responseType to ' + format_value(type) + ' when readyState is LOADING.'); |
| |
| async_test(function() { |
| var xhr = new XMLHttpRequest(); |
| xhr.open('get', '/'); |
| xhr.onreadystatechange = this.step_func(function() { |
| if (xhr.readyState === XMLHttpRequest.DONE) { |
| assert_throws("InvalidStateError", function() { |
| xhr.responseType = type; |
| }); |
| assert_equals(xhr.responseType, ""); |
| this.done(); |
| } |
| }); |
| xhr.send(); |
| }, 'Set responseType to ' + format_value(type) + ' when readyState is DONE.'); |
| |
| // Note: the case of setting responseType first, and then calling synchronous |
| // open(), is tested in open-method-responsetype-set-sync.htm. |
| test(function() { |
| var xhr = new XMLHttpRequest(); |
| xhr.open('get', '/', false); |
| assert_throws("InvalidAccessError", function() { |
| xhr.responseType = type; |
| }); |
| assert_equals(xhr.responseType, ""); |
| }, 'Set responseType to ' + format_value(type) + ' when readyState is OPENED and the sync flag is set.'); |
| |
| test(function() { |
| var xhr = new XMLHttpRequest(); |
| xhr.open('get', '/', false); |
| xhr.send(); |
| assert_equals(xhr.readyState, XMLHttpRequest.DONE); |
| assert_throws("InvalidStateError", function() { |
| xhr.responseType = type; |
| }); |
| assert_equals(xhr.responseType, ""); |
| }, 'Set responseType to ' + format_value(type) + ' when readyState is DONE and the sync flag is set.'); |
| }); |
| </script> |