Upstream version 7.36.149.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     function runEventsSanityCheck()
23     {
24         var events = [];
25         var phaseComplete = 0;
26         var knownEvents = {};
27         var processes = 0;
28         var threads = 0;
29
30         tracingModel.sortedProcesses().forEach(function(process) {
31             processes++;
32             process.sortedThreads().forEach(function(thread) {
33                 threads++;
34                 events = events.concat(thread.events());
35             });
36         });
37
38         knownEvents["MessageLoop::PostTask"] = 0;
39         knownEvents["v8.callFunction"] = 0;
40         knownEvents["Document::updateRenderTree"] = 0;
41         knownEvents["FrameView::layout"] = 0;
42
43         for (var i = 0; i < events.length; ++i) {
44             var event = events[i];
45             if (event.phase === WebInspector.TracingModel.Phase.Complete)
46                 ++phaseComplete;
47             if (event.name in knownEvents)
48                 ++knownEvents[event.name];
49         }
50         InspectorTest.assertGreaterOrEqual(events.length, 100, "Too few trace events recorded");
51         InspectorTest.assertGreaterOrEqual(knownEvents["v8.callFunction"], 10, "Too few v8.callFunction");
52         InspectorTest.assertGreaterOrEqual(knownEvents["Document::updateRenderTree"], 1, "Too few Document::recalcStyle");
53         InspectorTest.assertGreaterOrEqual(knownEvents["FrameView::layout"], 1, "Too few FrameView::layout");
54         InspectorTest.assertGreaterOrEqual(phaseComplete, 50, "Too few begin events");
55         InspectorTest.assertGreaterOrEqual(processes, 2, "Too few processes");
56         InspectorTest.assertGreaterOrEqual(threads, 4, "Too few threads");
57         InspectorTest.addResult("Event sanity test done");
58     }
59
60     function onTracingComplete()
61     {
62         InspectorTest.addResult("Tracing complete");
63         runEventsSanityCheck();
64         InspectorTest.completeTest();
65     }
66
67     var tracingModel = new WebInspector.TracingModel();
68     tracingModel.start("", "", onTracingStarted);
69     function onTracingStarted(error)
70     {
71         InspectorTest.addResult("Tracing started (error: " + JSON.stringify(error) + ")");
72         InspectorTest.evaluateInPage("doWork()", function() {
73             tracingModel.stop(onTracingComplete);
74         });
75     }
76 }
77
78 </script>
79 </head>
80 <body onload="runTest()">
81 <div id="test">
82 </div>
83 </body>
84 </html>