diff options
Diffstat (limited to 'testing/web-platform/tests/XMLHttpRequest/responsetype.html')
-rw-r--r-- | testing/web-platform/tests/XMLHttpRequest/responsetype.html | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/testing/web-platform/tests/XMLHttpRequest/responsetype.html b/testing/web-platform/tests/XMLHttpRequest/responsetype.html new file mode 100644 index 000000000..ade604417 --- /dev/null +++ b/testing/web-platform/tests/XMLHttpRequest/responsetype.html @@ -0,0 +1,96 @@ +<!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> |