OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 /** | 5 /** |
6 * @constructor | 6 * @constructor |
7 */ | 7 */ |
8 WebInspector.TimelineTraceEventBindings = function() | 8 WebInspector.TimelineTraceEventBindings = function() |
9 { | 9 { |
10 this._resetProcessingState(); | 10 this._reset(); |
11 } | 11 } |
12 | 12 |
| 13 WebInspector.TimelineTraceEventBindings.RecordType = { |
| 14 Program: "Program", |
| 15 EventDispatch: "EventDispatch", |
| 16 |
| 17 GPUTask: "GPUTask", |
| 18 |
| 19 RequestMainThreadFrame: "RequestMainThreadFrame", |
| 20 BeginFrame: "BeginFrame", |
| 21 BeginMainThreadFrame: "BeginMainThreadFrame", |
| 22 ActivateLayerTree: "ActivateLayerTree", |
| 23 DrawFrame: "DrawFrame", |
| 24 ScheduleStyleRecalculation: "ScheduleStyleRecalculation", |
| 25 RecalculateStyles: "RecalculateStyles", |
| 26 InvalidateLayout: "InvalidateLayout", |
| 27 Layout: "Layout", |
| 28 UpdateLayerTree: "UpdateLayerTree", |
| 29 PaintSetup: "PaintSetup", |
| 30 Paint: "Paint", |
| 31 Rasterize: "Rasterize", |
| 32 RasterTask: "RasterTask", |
| 33 ScrollLayer: "ScrollLayer", |
| 34 DecodeImage: "DecodeImage", |
| 35 ResizeImage: "ResizeImage", |
| 36 CompositeLayers: "CompositeLayers", |
| 37 |
| 38 ParseHTML: "ParseHTML", |
| 39 |
| 40 TimerInstall: "TimerInstall", |
| 41 TimerRemove: "TimerRemove", |
| 42 TimerFire: "TimerFire", |
| 43 |
| 44 XHRReadyStateChange: "XHRReadyStateChange", |
| 45 XHRLoad: "XHRLoad", |
| 46 EvaluateScript: "EvaluateScript", |
| 47 |
| 48 MarkLoad: "MarkLoad", |
| 49 MarkDOMContent: "MarkDOMContent", |
| 50 MarkFirstPaint: "MarkFirstPaint", |
| 51 |
| 52 TimeStamp: "TimeStamp", |
| 53 ConsoleTime: "ConsoleTime", |
| 54 |
| 55 ResourceSendRequest: "ResourceSendRequest", |
| 56 ResourceReceiveResponse: "ResourceReceiveResponse", |
| 57 ResourceReceivedData: "ResourceReceivedData", |
| 58 ResourceFinish: "ResourceFinish", |
| 59 |
| 60 FunctionCall: "FunctionCall", |
| 61 GCEvent: "GCEvent", |
| 62 JSFrame: "JSFrame", |
| 63 |
| 64 UpdateCounters: "UpdateCounters", |
| 65 |
| 66 RequestAnimationFrame: "RequestAnimationFrame", |
| 67 CancelAnimationFrame: "CancelAnimationFrame", |
| 68 FireAnimationFrame: "FireAnimationFrame", |
| 69 |
| 70 WebSocketCreate : "WebSocketCreate", |
| 71 WebSocketSendHandshakeRequest : "WebSocketSendHandshakeRequest", |
| 72 WebSocketReceiveHandshakeResponse : "WebSocketReceiveHandshakeResponse", |
| 73 WebSocketDestroy : "WebSocketDestroy", |
| 74 |
| 75 EmbedderCallback : "EmbedderCallback", |
| 76 |
| 77 CallStack: "CallStack", |
| 78 SetLayerTreeId: "SetLayerTreeId", |
| 79 TracingStartedInPage: "TracingStartedInPage", |
| 80 |
| 81 LayerTreeHostImplSnapshot: "cc::LayerTreeHostImpl" |
| 82 }; |
| 83 |
| 84 |
13 WebInspector.TimelineTraceEventBindings.prototype = { | 85 WebInspector.TimelineTraceEventBindings.prototype = { |
| 86 /** |
| 87 * @return {!Array.<!WebInspector.TracingModel.Event>} |
| 88 */ |
| 89 mainThreadEvents: function() |
| 90 { |
| 91 return this._mainThreadEvents; |
| 92 }, |
| 93 |
| 94 _reset: function() |
| 95 { |
| 96 this._resetProcessingState(); |
| 97 this._mainThreadEvents = []; |
| 98 }, |
| 99 |
14 _resetProcessingState: function() | 100 _resetProcessingState: function() |
15 { | 101 { |
16 this._sendRequestEvents = {}; | 102 this._sendRequestEvents = {}; |
17 this._timerEvents = {}; | 103 this._timerEvents = {}; |
18 this._requestAnimationFrameEvents = {}; | 104 this._requestAnimationFrameEvents = {}; |
19 this._layoutInvalidate = {}; | 105 this._layoutInvalidate = {}; |
20 this._lastScheduleStyleRecalculation = {}; | 106 this._lastScheduleStyleRecalculation = {}; |
21 this._webSocketCreateEvents = {}; | 107 this._webSocketCreateEvents = {}; |
22 | 108 |
23 this._lastRecalculateStylesEvent = null; | 109 this._lastRecalculateStylesEvent = null; |
24 this._currentScriptEvent = null; | 110 this._currentScriptEvent = null; |
25 this._lastMainThreadEvent = null; | |
26 this._eventStack = []; | 111 this._eventStack = []; |
27 }, | 112 }, |
28 | 113 |
29 /** | 114 /** |
30 * @param {!Array.<!WebInspector.TracingModel.Event>} events | 115 * @param {!Array.<!WebInspector.TracingModel.Event>} events |
31 */ | 116 */ |
32 setEvents: function(events) | 117 setEvents: function(events) |
33 { | 118 { |
34 this._resetProcessingState(); | 119 this._resetProcessingState(); |
35 for (var i = 0, length = events.length; i < length; i++) | 120 for (var i = 0, length = events.length; i < length; i++) |
36 this._processMainThreadEvent(events[i]); | 121 this._processEvent(events[i]); |
37 this._resetProcessingState(); | 122 this._resetProcessingState(); |
38 }, | 123 }, |
39 | 124 |
40 _processMainThreadEvent: function(event) | 125 /** |
| 126 * @param {!WebInspector.TracingModel.Event} event |
| 127 */ |
| 128 _processEvent: function(event) |
41 { | 129 { |
42 var recordTypes = WebInspector.TimelineModel.RecordType; | 130 var recordTypes = WebInspector.TimelineTraceEventBindings.RecordType; |
43 | 131 |
44 var eventStack = this._eventStack; | 132 var eventStack = this._eventStack; |
45 while (eventStack.length && eventStack.peekLast().endTime < event.startT
ime) | 133 while (eventStack.length && eventStack.peekLast().endTime < event.startT
ime) |
46 eventStack.pop(); | 134 eventStack.pop(); |
47 var duration = event.duration; | 135 var duration = event.duration; |
48 if (duration) { | 136 if (duration) { |
49 if (eventStack.length) { | 137 if (eventStack.length) { |
50 var parent = eventStack.peekLast(); | 138 var parent = eventStack.peekLast(); |
51 parent.selfTime -= duration; | 139 parent.selfTime -= duration; |
52 } | 140 } |
53 event.selfTime = duration; | 141 event.selfTime = duration; |
54 eventStack.push(event); | 142 eventStack.push(event); |
55 } | 143 } |
56 | 144 |
57 if (this._currentScriptEvent && event.startTime > this._currentScriptEve
nt.endTime) | 145 if (this._currentScriptEvent && event.startTime > this._currentScriptEve
nt.endTime) |
58 this._currentScriptEvent = null; | 146 this._currentScriptEvent = null; |
59 | 147 |
60 switch (event.name) { | 148 switch (event.name) { |
61 case recordTypes.CallStack: | 149 case recordTypes.CallStack: |
62 if (this._lastMainThreadEvent) | 150 var lastMainThreadEvent = this._mainThreadEvents.peekLast(); |
63 this._lastMainThreadEvent.stackTrace = event.args.stack; | 151 if (lastMainThreadEvent) |
64 break | 152 lastMainThreadEvent.stackTrace = event.args.stack; |
| 153 break; |
65 | 154 |
66 case recordTypes.ResourceSendRequest: | 155 case recordTypes.ResourceSendRequest: |
67 this._sendRequestEvents[event.args.data["requestId"]] = event; | 156 this._sendRequestEvents[event.args.data["requestId"]] = event; |
68 break; | 157 break; |
69 | 158 |
70 case recordTypes.ResourceReceiveResponse: | 159 case recordTypes.ResourceReceiveResponse: |
71 case recordTypes.ResourceReceivedData: | 160 case recordTypes.ResourceReceivedData: |
72 case recordTypes.ResourceFinish: | 161 case recordTypes.ResourceFinish: |
73 event.initiator = this._sendRequestEvents[event.args.data["requestId
"]]; | 162 event.initiator = this._sendRequestEvents[event.args.data["requestId
"]]; |
74 break; | 163 break; |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
119 case recordTypes.WebSocketCreate: | 208 case recordTypes.WebSocketCreate: |
120 this._webSocketCreateEvents[event.args.data["identifier"]] = event; | 209 this._webSocketCreateEvents[event.args.data["identifier"]] = event; |
121 break; | 210 break; |
122 | 211 |
123 case recordTypes.WebSocketSendHandshakeRequest: | 212 case recordTypes.WebSocketSendHandshakeRequest: |
124 case recordTypes.WebSocketReceiveHandshakeResponse: | 213 case recordTypes.WebSocketReceiveHandshakeResponse: |
125 case recordTypes.WebSocketDestroy: | 214 case recordTypes.WebSocketDestroy: |
126 event.initiator = this._webSocketCreateEvents[event.args.data["ident
ifier"]]; | 215 event.initiator = this._webSocketCreateEvents[event.args.data["ident
ifier"]]; |
127 break; | 216 break; |
128 | 217 |
129 case WebInspector.TimelineModel.RecordType.EvaluateScript: | 218 case recordTypes.EvaluateScript: |
130 case WebInspector.TimelineModel.RecordType.FunctionCall: | 219 case recordTypes.FunctionCall: |
131 if (!this._currentScriptEvent) | 220 if (!this._currentScriptEvent) |
132 this._currentScriptEvent = event; | 221 this._currentScriptEvent = event; |
133 break; | 222 break; |
| 223 |
| 224 case recordTypes.SetLayerTreeId: |
| 225 this._inspectedTargetLayerTreeId = event.args["layerTreeId"]; |
| 226 break; |
| 227 |
| 228 case recordTypes.TracingStartedInPage: |
| 229 this._mainThread = event.thread; |
| 230 break; |
134 } | 231 } |
135 this._lastMainThreadEvent = event; | 232 if (this._mainThread === event.thread) |
| 233 this._mainThreadEvents.push(event); |
136 } | 234 } |
137 } | 235 } |
138 | 236 |
OLD | NEW |