}
</style>
<script src="../http/tests/inspector/inspector-test.js"></script>
+<script src="../http/tests/inspector/timeline-test.js"></script>
<script>
function doWork()
{
- document.getElementById("test").style.display = "block";
- testRunner.display();
+ var element = document.getElementById("test");
+ element.style.display = "block";
+ var unused = element.clientWidth;
}
function test()
{
- function runEventsSanityCheck(events)
+ var tracingManager = new WebInspector.TracingManager();
+ var tracingModel = new WebInspector.TracingModel();
+
+ function runEventsSanityCheck()
{
+ var events = [];
var phaseComplete = 0;
var knownEvents = {};
- var processes = {};
- var threads = {};
+ var processes = 0;
+ var threads = 0;
+
+ tracingModel.sortedProcesses().forEach(function(process) {
+ processes++;
+ process.sortedThreads().forEach(function(thread) {
+ threads++;
+ events = events.concat(thread.events());
+ });
+ });
knownEvents["MessageLoop::PostTask"] = 0;
knownEvents["v8.callFunction"] = 0;
- knownEvents["Document::recalcStyle"] = 0;
+ knownEvents["Document::updateRenderTree"] = 0;
knownEvents["FrameView::layout"] = 0;
for (var i = 0; i < events.length; ++i) {
var event = events[i];
- if (event.ph === "X")
+ if (event.phase === WebInspector.TracingModel.Phase.Complete)
++phaseComplete;
if (event.name in knownEvents)
++knownEvents[event.name];
- processes[event.pid] = (processes[event.pid] || 0) + 1;
- threads[event.tid] = (threads[event.tid] || 0) + 1;
}
InspectorTest.assertGreaterOrEqual(events.length, 100, "Too few trace events recorded");
- InspectorTest.assertGreaterOrEqual(knownEvents["MessageLoop::PostTask"], 20, "Too few MessageLoop::PostTask");
- InspectorTest.assertGreaterOrEqual(knownEvents["v8.callFunction"], 10, "Too few v8.callFunction");
- InspectorTest.assertGreaterOrEqual(knownEvents["Document::recalcStyle"], 1, "Too few Document::recalcStyle");
+ InspectorTest.assertGreaterOrEqual(knownEvents["v8.callFunction"], 1, "Too few v8.callFunction");
+ InspectorTest.assertGreaterOrEqual(knownEvents["Document::updateRenderTree"], 1, "Too few Document::recalcStyle");
InspectorTest.assertGreaterOrEqual(knownEvents["FrameView::layout"], 1, "Too few FrameView::layout");
InspectorTest.assertGreaterOrEqual(phaseComplete, 50, "Too few begin events");
- InspectorTest.assertGreaterOrEqual(Object.keys(processes).length, 2, "Too few processes");
- InspectorTest.assertGreaterOrEqual(Object.keys(threads).length, 4, "Too few threads");
+ InspectorTest.assertGreaterOrEqual(processes, 2, "Too few processes");
+ InspectorTest.assertGreaterOrEqual(threads, 4, "Too few threads");
InspectorTest.addResult("Event sanity test done");
}
function onTracingComplete()
{
+ tracingManager.removeEventListener(WebInspector.TracingManager.Events.TracingComplete, onTracingComplete);
InspectorTest.addResult("Tracing complete");
- runEventsSanityCheck(WebInspector.tracingAgent.events());
+ runEventsSanityCheck();
InspectorTest.completeTest();
}
- WebInspector.tracingAgent.start("", "", onTracingStarted);
- setTimeout(InspectorTest.completeTest.bind(InspectorTest), 2000);
+ tracingManager.start("", "", onTracingStarted);
+ tracingManager.addEventListener(WebInspector.TracingManager.Events.EventsCollected, onEventsCollected);
+
function onTracingStarted(error)
{
InspectorTest.addResult("Tracing started (error: " + JSON.stringify(error) + ")");
+ tracingModel.reset();
InspectorTest.evaluateInPage("doWork()", function() {
- WebInspector.tracingAgent.stop(onTracingComplete);
+ tracingManager.addEventListener(WebInspector.TracingManager.Events.TracingComplete, onTracingComplete);
+ tracingManager.stop();
});
}
+
+ function onEventsCollected(event)
+ {
+ tracingModel.addEvents(event.data);
+ }
}
</script>