chromium/third_party/blink/web_tests/http/tests/xmlhttprequest/response-empty-arraybuffer.html

<html>
<body>
<title>Test that XMLHttpRequest.response returns an empty ArrayBuffer when received a response without an entity body.</title>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script>

var zeroContentLengthTest = async_test("Test that XMLHttpRequest.response returns an empty ArrayBuffer when received a response with zero content length.");
zeroContentLengthTest.step(function() {
    var req = new XMLHttpRequest;
    req.responseType = 'arraybuffer';
    req.open('GET', 'resources/zero-length.xml', true);
    req.onreadystatechange = zeroContentLengthTest.step_func(function() {
        if (req.readyState != 4)
            return;

        assert_equals(req.status, 200);
        assert_equals(Object.prototype.toString.call(req.response), '[object ArrayBuffer]');
        assert_equals(req.response.byteLength, 0);
        zeroContentLengthTest.done();
    });
    req.send(null);
});


var notModifiedTest = async_test("Test that XMLHttpRequest.response returns an empty ArrayBuffer when received status is '304 not modified'.");
notModifiedTest.step(function() {
    var req = new XMLHttpRequest;
    req.responseType = 'arraybuffer';
    req.open('GET', 'resources/reply.xml', true);
    req.onreadystatechange = notModifiedTest.step_func(function() {
        if (req.readyState != 4)
            return;

        assert_equals(req.status, 200);
        assert_equals(Object.prototype.toString.call(req.response), '[object ArrayBuffer]');
        assert_equals(req.response.byteLength, 68);

        var lastModified = req.getResponseHeader("Last-Modified");

        var req2 = new XMLHttpRequest;
        req2.responseType = 'arraybuffer';
        req2.open('GET', 'resources/reply.xml', true);
        req2.setRequestHeader("If-Modified-Since", lastModified);
        req2.onreadystatechange = notModifiedTest.step_func(function() {
            if (req2.readyState != 4)
                return;

            assert_equals(req2.status, 304);
            assert_equals(Object.prototype.toString.call(req2.response), '[object ArrayBuffer]');
            assert_equals(req2.response.byteLength, 0);
            notModifiedTest.done();
        });
        req2.send(null);
    });
    req.send(null);
});

</script>
</body>