Upstream version 5.34.104.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     document.getElementById("test").style.display = "block";
16     testRunner.display();
17 }
18
19 function test()
20 {
21     function runEventsSanityCheck(events)
22     {
23         var phaseComplete = 0;
24         var knownEvents = {};
25         var processes = {};
26         var threads = {};
27
28         knownEvents["MessageLoop::PostTask"] = 0;
29         knownEvents["v8.callFunction"] = 0;
30         knownEvents["Document::recalcStyle"] = 0;
31         knownEvents["FrameView::layout"] = 0;
32
33         for (var i = 0; i < events.length; ++i) {
34             var event = events[i];
35             if (event.ph === "X")
36                 ++phaseComplete;
37             if (event.name in knownEvents)
38                 ++knownEvents[event.name];
39             processes[event.pid] = (processes[event.pid] || 0) + 1;
40             threads[event.tid] = (threads[event.tid] || 0) + 1;
41         }
42         InspectorTest.assertGreaterOrEqual(events.length, 100, "Too few trace events recorded");
43         InspectorTest.assertGreaterOrEqual(knownEvents["v8.callFunction"], 10, "Too few v8.callFunction");
44         InspectorTest.assertGreaterOrEqual(knownEvents["Document::recalcStyle"], 1, "Too few Document::recalcStyle");
45         InspectorTest.assertGreaterOrEqual(knownEvents["FrameView::layout"], 1, "Too few FrameView::layout");
46         InspectorTest.assertGreaterOrEqual(phaseComplete, 50, "Too few begin events");
47         InspectorTest.assertGreaterOrEqual(Object.keys(processes).length, 2, "Too few processes");
48         InspectorTest.assertGreaterOrEqual(Object.keys(threads).length, 4, "Too few threads");
49         InspectorTest.addResult("Event sanity test done");
50     }
51
52     function onTracingComplete()
53     {
54         InspectorTest.addResult("Tracing complete");
55         runEventsSanityCheck(WebInspector.tracingAgent.events());
56         InspectorTest.completeTest();
57     }
58
59     WebInspector.tracingAgent.start("", "", onTracingStarted);
60     setTimeout(InspectorTest.completeTest.bind(InspectorTest), 2000);
61     function onTracingStarted(error)
62     {
63         InspectorTest.addResult("Tracing started (error: " + JSON.stringify(error) + ")");
64         InspectorTest.evaluateInPage("doWork()", function() {
65             WebInspector.tracingAgent.stop(onTracingComplete);
66         });
67     }
68 }
69
70 </script>
71 </head>
72 <body onload="runTest()">
73 <div id="test">
74 </div>
75 </body>
76 </html>