<!DOCTYPE html>
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
<script>
window.jsTestIsAsync = true;
description('Tests XMLHttpRequest.responseType of "json" with a valid payload.');

var jsonXHR = new XMLHttpRequest();
var textXHR = new XMLHttpRequest();
var jsonUrl = 'resources/xmlhttprequest-responsetype-json.json';
var response;
var responseText;

jsonXHR.open('GET', jsonUrl);
jsonXHR.responseType = 'json';
jsonXHR.onload = function() {
    shouldBeNonNull('jsonXHR.response');
    shouldBe('jsonXHR.response', 'jsonXHR.response');

    textXHR.open('GET', jsonUrl);
    textXHR.onload = function() {
        shouldBe('JSON.stringify(jsonXHR.response)', 'JSON.stringify(JSON.parse(textXHR.responseText))');

        // When calling open() to reuse an XHR instance, the cached response
        // should have been cleared.
        shouldBeNull('jsonXHR.open("GET", jsonUrl); jsonXHR.response');

        finishJSTest();
    };
    textXHR.onerror = function() {
        testFailed('An error occurred while loading "' + jsonUrl + '"');
        finishJSTest();
    };
    textXHR.send(null);
};
jsonXHR.onerror = function() {
    testFailed('An error occurred while loading "' + jsonUrl + '"');
    finishJSTest();
};

shouldBeNull('jsonXHR.response');
jsonXHR.send(null);
</script>
<script src="../../resources/js-test-post.js"></script>
</head>
<body>
<div id="description"></div>
<div id="console"></div>
</body>
</html>