3 <script src="../../http/tests/inspector/inspector-test.js"></script>
4 <script src="../../http/tests/inspector/console-test.js"></script>
5 <script src="../../http/tests/inspector/timeline-test.js"></script>
8 function startStopTimeline()
10 console.timeStamp("timestamp 0");
11 console.timeline("one");
12 console.timeStamp("timestamp 1");
13 console.timelineEnd("one");
14 console.timeStamp("timestamp 2");
17 function startStopMultiple()
19 console.timeStamp("timestamp 0");
20 console.timeline("one");
21 console.timeStamp("timestamp 1");
22 console.timeline("one");
23 console.timeline("two");
24 console.timeline("two");
25 console.timelineEnd("two");
26 console.timeStamp("timestamp 2");
27 console.timelineEnd("one");
28 console.timeStamp("timestamp 3");
29 console.timelineEnd("two");
30 console.timeStamp("timestamp 4");
31 console.timelineEnd("one");
32 console.timeStamp("timestamp 5");
35 function startMultiple()
37 console.timeStamp("timestamp 0");
38 console.timeline("one");
39 console.timeStamp("timestamp 1");
40 console.timeline("two");
41 console.timeStamp("timestamp 2");
46 console.timeStamp("timestamp 3");
47 console.timelineEnd("two");
48 console.timeStamp("timestamp 4");
53 console.timeStamp("timestamp 5");
54 console.timelineEnd("one");
55 console.timeStamp("timestamp 6 - FAIL");
58 function stopUnknown()
60 console.timeStamp("timestamp 0");
61 console.timeline("one");
62 console.timeStamp("timestamp 1");
63 console.timelineEnd("two");
64 console.timeStamp("timestamp 2");
65 console.timelineEnd("one");
66 console.timeStamp("timestamp 3");
69 function startTimeline()
71 console.timeStamp("timestamp 0");
72 console.timeline("one");
73 console.timeStamp("timestamp 1");
74 console.timeline("two");
75 console.timeStamp("timestamp 2");
80 var panel = WebInspector.panels.timeline;
81 panel._model._currentTarget = WebInspector.targetManager.mainTarget();
83 InspectorTest.runTestSuite([
84 function testStartStopTimeline(next)
86 InspectorTest.evaluateWithTimeline("startStopTimeline()", allEventsReceived);
88 function allEventsReceived()
90 printTimelineAndTimestampEvents();
95 function testStartStopMultiple(next)
97 InspectorTest.evaluateWithTimeline("startStopMultiple()", allEventsReceived);
99 function allEventsReceived()
101 printTimelineAndTimestampEvents();
106 function testStartMultipleStopInsideEvals(next)
108 InspectorTest.startTimeline(step1);
112 InspectorTest.evaluateInPage("startMultiple()", step2);
117 InspectorTest.evaluateInPage("stopTwo()", step3);
122 InspectorTest.evaluateInPage("stopOne()", step4);
127 InspectorTest.stopTimeline(finish);
132 printTimelineAndTimestampEvents();
137 function testStopUnknown(next)
139 InspectorTest.evaluateWithTimeline("stopUnknown()", allEventsReceived);
141 function allEventsReceived()
143 printTimelineAndTimestampEvents();
148 function testStartFromPanel(next)
150 panel._model.addEventListener(WebInspector.TimelineModel.Events.RecordingStarted, recordingStarted);
151 panel._model.addEventListener(WebInspector.TimelineModel.Events.RecordingStopped, finish);
152 panel._toggleTimelineButtonClicked();
154 function recordingStarted()
156 panel._model.removeEventListener(WebInspector.TimelineModel.Events.RecordingStarted, recordingStarted);
157 InspectorTest.evaluateInPage("startStopTimeline()", step2);
162 panel._toggleTimelineButtonClicked();
167 printTimelineAndTimestampEvents();
168 panel._model.removeEventListener(WebInspector.TimelineModel.Events.RecordingStopped, finish);
173 function testStopFromPanel(next)
175 panel._model.addEventListener(WebInspector.TimelineModel.Events.RecordingStopped, finish);
177 InspectorTest.startTimeline(step1);
181 InspectorTest.evaluateInPage("startTimeline()", step2);
186 panel._toggleTimelineButtonClicked();
191 printTimelineAndTimestampEvents();
192 panel._model.removeEventListener(WebInspector.TimelineModel.Events.RecordingStopped, finish);
197 function testRacyStart(next)
199 panel._model.addEventListener(WebInspector.TimelineModel.Events.RecordingStopped, finish);
200 panel._toggleTimelineButtonClicked();
201 InspectorTest.evaluateInPage("startTimeline()", timelineStarted);
203 function timelineStarted()
205 panel._toggleTimelineButtonClicked();
210 printTimelineAndTimestampEvents();
211 panel._model.removeEventListener(WebInspector.TimelineModel.Events.RecordingStopped, finish);
216 function testRacyStart2(next)
218 panel._model.addEventListener(WebInspector.TimelineModel.Events.RecordingStopped, finish);
220 panel._toggleTimelineButtonClicked();
221 InspectorTest.evaluateInPage("startTimeline()", timelineStarted);
223 function timelineStarted()
225 // Fool listener order execution.
226 setTimeout(panel._toggleTimelineButtonClicked.bind(panel));
231 panel._model.removeEventListener(WebInspector.TimelineModel.Events.RecordingStopped, finish);
232 printTimelineAndTimestampEvents();
238 function printTimelineAndTimestampEvents() {
239 panel._tracingModel.sortedProcesses().forEach(function(process)
241 process.sortedThreads().forEach(function(thread)
243 thread.events().forEach(function(event)
245 if (event.category === WebInspector.TracingModel.ConsoleEventCategory)
246 InspectorTest.addResult(event.name);
247 else if (event.name === WebInspector.TracingTimelineModel.RecordType.TimeStamp)
248 InspectorTest.addResult(event.args["data"]["message"]);
258 <body onload="runTest()">
260 Tests console.timeline and timelineEnd commands.