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

<script type="text/javascript">

function extension_testAuditsAPI(nextTest)
{
    function onStartAuditCategory(results)
    {
        output("category.onAuditStarted fired, results dump follows:");
        dumpObject(results);
        var node = results.createResult("Subtree");
        dumpObject(node);
        // Make sure dumpObject() pushes stuff through before we continue.
        evaluateOnFrontend("InspectorTest.runAfterPendingDispatches(reply)", function() {
            results.done();
        });
    }
    var category = webInspector.audits.addCategory("Extension audits");
    category.onAuditStarted.addListener(onStartAuditCategory);
    output("Added audit category, result dump follows:");
    dumpObject(category);
    extension_runAudits(nextTest);
}

</script>
</head>
<body onload="runTest()">
<p>Tests audits support in WebInspector Extensions API</p>
</body>
</html>
