<html>
<head>
<script src="../inspector-test.js"></script>
<script src="../network-test.js"></script>
<script>
function test()
{
    InspectorTest.makeSimpleXHR("GET", "resources/json.php", true, step2);

    function step2()
    {
        var request1 = WebInspector.panel("network").requests[WebInspector.panel("network").requests.length - 1];
        InspectorTest.addResult(request1.url);
        InspectorTest.addResult("resource.type: " + request1.type);
        InspectorTest.addResult("resource.content before requesting content: " + request1.content);
        InspectorTest.assertTrue(!request1.failed, "Resource loading failed.");
        request1.requestContent(step3);
    }

    function step3()
    {
        var request1 = WebInspector.panel("network").requests[WebInspector.panel("network").requests.length - 1];
        InspectorTest.addResult("resource.content after requesting content: " + request1.content);

        InspectorTest.completeTest();
    }
}
</script>
</head>
<body onload="runTest()">
 <p>
 Tests XHR network resource content for asynchronous requests with application/json mime type.
<a href="https://bugs.webkit.org/show_bug.cgi?id=80684">Bug 80684</a>
</p>
</body>
</html>
