<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../LayoutTests/http/tests/inspector/inspector-test.js"></script>
<script src="performance-test.js"></script>
<script>

function onload()
{
    testRunner.waitUntilDone();
    times = [];
    startTime = Date.now();
    testStartTime = startTime;
    runTest();
}

function inspectorIsReady()
{
    times.push(Date.now() - startTime);
    if (Date.now() - testStartTime > 20000) {
        testRunner.evaluateInWebInspector(2, "InspectorTest.dumpTestStats('inspector-startup-time', 'time', " + JSON.stringify(times) + ", 'ms')")
        testRunner.evaluateInWebInspector(3, "(InspectorTest.completeTest())")
        return;
    }
    testRunner.closeWebInspector();
    startTime = Date.now();
    testRunner.showWebInspector();
    runTest();
}

function test()
{
    WebInspector.domAgent._setDocument(null);

    InspectorTest.addBackendResponseSniffer(DOMAgent, "requestChildNodes", function() {
        WebInspector.settings.lastActivePanel.set("audits");
        InspectorTest.evaluateInPage("inspectorIsReady()");
    });
    WebInspector.showPanel("elements");
}

</script>

</head>
<body onload="onload()">
<div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div>
<div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div>
<div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div>
<div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div>
<div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div>
<div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div>
<div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div>
<div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div>
<div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div>
<div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div>
</body>
</html>
