Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / LayoutTests / inspector / tracing.html
1 <html>
2 <head>
3 <style>
4 div#test {
5     display: none;
6     background-color: blue;
7     width: 100px;
8     height: 100px;
9 }
10 </style>
11 <script src="../http/tests/inspector/inspector-test.js"></script>
12 <script>
13 function doWork()
14 {
15     var element = document.getElementById("test");
16     element.style.display = "block";
17     var unused = element.clientWidth;
18 }
19
20 function test()
21 {
22     WebInspector.inspectorView.showPanel("timeline");
23
24     function runEventsSanityCheck()
25     {
26         var events = [];
27         var phaseComplete = 0;
28         var knownEvents = {};
29         var processes = 0;
30         var threads = 0;
31
32         tracingModel.sortedProcesses().forEach(function(process) {
33             processes++;
34             process.sortedThreads().forEach(function(thread) {
35                 threads++;
36                 events = events.concat(thread.events());
37             });
38         });
39
40         knownEvents["MessageLoop::PostTask"] = 0;
41         knownEvents["v8.callFunction"] = 0;
42         knownEvents["Document::updateRenderTree"] = 0;
43         knownEvents["FrameView::layout"] = 0;
44
45         for (var i = 0; i < events.length; ++i) {
46             var event = events[i];
47             if (event.phase === WebInspector.TracingModel.Phase.Complete)
48                 ++phaseComplete;
49             if (event.name in knownEvents)
50                 ++knownEvents[event.name];
51         }
52         InspectorTest.assertGreaterOrEqual(events.length, 100, "Too few trace events recorded");
53         InspectorTest.assertGreaterOrEqual(knownEvents["v8.callFunction"], 10, "Too few v8.callFunction");
54         InspectorTest.assertGreaterOrEqual(knownEvents["Document::updateRenderTree"], 1, "Too few Document::recalcStyle");
55         InspectorTest.assertGreaterOrEqual(knownEvents["FrameView::layout"], 1, "Too few FrameView::layout");
56         InspectorTest.assertGreaterOrEqual(phaseComplete, 50, "Too few begin events");
57         InspectorTest.assertGreaterOrEqual(processes, 2, "Too few processes");
58         InspectorTest.assertGreaterOrEqual(threads, 4, "Too few threads");
59         InspectorTest.addResult("Event sanity test done");
60     }
61
62     function onTracingComplete()
63     {
64         tracingModel.removeEventListener(WebInspector.TracingModel.Events.TracingComplete, onTracingComplete);
65         InspectorTest.addResult("Tracing complete");
66         runEventsSanityCheck();
67         InspectorTest.completeTest();
68     }
69
70     var tracingModel = new WebInspector.TracingModel(WebInspector.targetManager.mainTarget());
71     tracingModel.start("", "", onTracingStarted);
72     function onTracingStarted(error)
73     {
74         InspectorTest.addResult("Tracing started (error: " + JSON.stringify(error) + ")");
75         InspectorTest.evaluateInPage("doWork()", function() {
76             tracingModel.addEventListener(WebInspector.TracingModel.Events.TracingComplete, onTracingComplete);
77             tracingModel.stop(onTracingComplete);
78         });
79     }
80 }
81
82 </script>
83 </head>
84 <body onload="runTest()">
85 <div id="test">
86 </div>
87 </body>
88 </html>