<html>
<head>
<script src="../../LayoutTests/http/tests/inspector/inspector-test.js"></script>
<script src="performance-test.js"></script>
<script>

function makeXHRRequests(count)
{
    for (var i = 0; i < count; ++i) {
        var xhr = new XMLHttpRequest();
        xhr.open("GET", document.URL, true);
        xhr.send();
    }
}

function test()
{
    WebInspector.showPanel("network");

    var originalRefresh = InspectorTest.override(WebInspector.panels.network._networkLogView, "refresh", timeTrackingRefresh, true);
    WebInspector.panels.network._networkLogView._defaultRefreshDelay = 30;
    function timeTrackingRefresh()
    {
        var cookie = InspectorTest.timer.start("network-append-30-requests");
        originalRefresh.call(this);
        InspectorTest.timer.finish(cookie);
        WebInspector.panels.network._networkLogView._reset();
        // In real life this array is cleaning up at navigation event.
        WebInspector.networkLog._resources = [];
        InspectorTest.timer.done("panel-update");
    }

    function test(timer)
    {
        InspectorTest.evaluateInPage("makeXHRRequests(30)");
    }

    InspectorTest.runPerformanceTest(test, 15000);
}

if (!window.testRunner) {
    setTimeout(function() {
        makeXHRRequests(30);
    }, 3000);
}

</script>
</head>

<body onload="runTest()">
</body>
</html>
