3 <script src=
"../resources/testharness.js"></script>
4 <script src=
"../resources/testharnessreport.js"></script>
5 <p>Test that XMLHttpRequest.response returns an empty ArrayBuffer when received a response without an entity body.
</p>
6 <pre id=
"console"></pre>
9 var zeroContentLengthTest
= async_test("Test that XMLHttpRequest.response returns an empty ArrayBuffer when received a response with zero content length.");
10 zeroContentLengthTest
.step(function() {
11 var req
= new XMLHttpRequest
;
12 req
.responseType
= 'arraybuffer';
13 req
.open('GET', 'resources/zero-length.xml', true);
14 req
.onreadystatechange
= zeroContentLengthTest
.step_func(function() {
15 if (req
.readyState
!= 4)
18 assert_equals(req
.status
, 200);
19 assert_equals(Object
.prototype.toString
.call(req
.response
), '[object ArrayBuffer]');
20 assert_equals(req
.response
.byteLength
, 0);
21 zeroContentLengthTest
.done();
27 var notModifiedTest
= async_test("Test that XMLHttpRequest.response returns an empty ArrayBuffer when received status is '304 not modified'.");
28 notModifiedTest
.step(function() {
29 var req
= new XMLHttpRequest
;
30 req
.responseType
= 'arraybuffer';
31 req
.open('GET', 'resources/reply.xml', true);
32 req
.onreadystatechange
= notModifiedTest
.step_func(function() {
33 if (req
.readyState
!= 4)
36 assert_equals(req
.status
, 200);
37 assert_equals(Object
.prototype.toString
.call(req
.response
), '[object ArrayBuffer]');
38 assert_equals(req
.response
.byteLength
, 68);
40 var lastModified
= req
.getResponseHeader("Last-Modified");
42 var req2
= new XMLHttpRequest
;
43 req2
.responseType
= 'arraybuffer';
44 req2
.open('GET', 'resources/reply.xml', true);
45 req2
.setRequestHeader("If-Modified-Since", lastModified
);
46 req2
.onreadystatechange
= notModifiedTest
.step_func(function() {
47 if (req2
.readyState
!= 4)
50 assert_equals(req2
.status
, 304);
51 assert_equals(Object
.prototype.toString
.call(req2
.response
), '[object ArrayBuffer]');
52 assert_equals(req2
.response
.byteLength
, 0);
53 notModifiedTest
.done();