Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(16)

Side by Side Diff: Source/devtools/front_end/timeline/TimelineTraceEventBindings.js

Issue 308123008: DevTools: added support for image url & node in tracing-based timeline (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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._reset(); 10 this._reset();
(...skipping 10 matching lines...) Expand all
21 BeginMainThreadFrame: "BeginMainThreadFrame", 21 BeginMainThreadFrame: "BeginMainThreadFrame",
22 ActivateLayerTree: "ActivateLayerTree", 22 ActivateLayerTree: "ActivateLayerTree",
23 DrawFrame: "DrawFrame", 23 DrawFrame: "DrawFrame",
24 ScheduleStyleRecalculation: "ScheduleStyleRecalculation", 24 ScheduleStyleRecalculation: "ScheduleStyleRecalculation",
25 RecalculateStyles: "RecalculateStyles", 25 RecalculateStyles: "RecalculateStyles",
26 InvalidateLayout: "InvalidateLayout", 26 InvalidateLayout: "InvalidateLayout",
27 Layout: "Layout", 27 Layout: "Layout",
28 UpdateLayerTree: "UpdateLayerTree", 28 UpdateLayerTree: "UpdateLayerTree",
29 PaintSetup: "PaintSetup", 29 PaintSetup: "PaintSetup",
30 Paint: "Paint", 30 Paint: "Paint",
31 PaintImage: "PaintImage",
31 Rasterize: "Rasterize", 32 Rasterize: "Rasterize",
32 RasterTask: "RasterTask", 33 RasterTask: "RasterTask",
33 ScrollLayer: "ScrollLayer", 34 ScrollLayer: "ScrollLayer",
34 DecodeImage: "DecodeImage",
35 ResizeImage: "ResizeImage",
36 CompositeLayers: "CompositeLayers", 35 CompositeLayers: "CompositeLayers",
37 36
38 ParseHTML: "ParseHTML", 37 ParseHTML: "ParseHTML",
39 38
40 TimerInstall: "TimerInstall", 39 TimerInstall: "TimerInstall",
41 TimerRemove: "TimerRemove", 40 TimerRemove: "TimerRemove",
42 TimerFire: "TimerFire", 41 TimerFire: "TimerFire",
43 42
44 XHRReadyStateChange: "XHRReadyStateChange", 43 XHRReadyStateChange: "XHRReadyStateChange",
45 XHRLoad: "XHRLoad", 44 XHRLoad: "XHRLoad",
(...skipping 25 matching lines...) Expand all
71 WebSocketSendHandshakeRequest : "WebSocketSendHandshakeRequest", 70 WebSocketSendHandshakeRequest : "WebSocketSendHandshakeRequest",
72 WebSocketReceiveHandshakeResponse : "WebSocketReceiveHandshakeResponse", 71 WebSocketReceiveHandshakeResponse : "WebSocketReceiveHandshakeResponse",
73 WebSocketDestroy : "WebSocketDestroy", 72 WebSocketDestroy : "WebSocketDestroy",
74 73
75 EmbedderCallback : "EmbedderCallback", 74 EmbedderCallback : "EmbedderCallback",
76 75
77 CallStack: "CallStack", 76 CallStack: "CallStack",
78 SetLayerTreeId: "SetLayerTreeId", 77 SetLayerTreeId: "SetLayerTreeId",
79 TracingStartedInPage: "TracingStartedInPage", 78 TracingStartedInPage: "TracingStartedInPage",
80 79
80 DecodeImage: "Decode Image",
81 ResizeImage: "Resize Image",
82 DrawLazyPixelRef: "Draw LazyPixelRef",
83 DecodeLazyPixelRef: "Decode LazyPixelRef",
84
85 LazyPixelRef: "LazyPixelRef",
81 LayerTreeHostImplSnapshot: "cc::LayerTreeHostImpl" 86 LayerTreeHostImplSnapshot: "cc::LayerTreeHostImpl"
82 }; 87 };
83 88
84 89
85 WebInspector.TimelineTraceEventBindings.prototype = { 90 WebInspector.TimelineTraceEventBindings.prototype = {
86 /** 91 /**
87 * @return {!Array.<!WebInspector.TracingModel.Event>} 92 * @return {!Array.<!WebInspector.TracingModel.Event>}
88 */ 93 */
89 mainThreadEvents: function() 94 mainThreadEvents: function()
90 { 95 {
91 return this._mainThreadEvents; 96 return this._mainThreadEvents;
92 }, 97 },
93 98
94 _reset: function() 99 _reset: function()
95 { 100 {
96 this._resetProcessingState(); 101 this._resetProcessingState();
97 this._mainThreadEvents = []; 102 this._mainThreadEvents = [];
98 }, 103 },
99 104
100 _resetProcessingState: function() 105 _resetProcessingState: function()
101 { 106 {
102 this._sendRequestEvents = {}; 107 this._sendRequestEvents = {};
103 this._timerEvents = {}; 108 this._timerEvents = {};
104 this._requestAnimationFrameEvents = {}; 109 this._requestAnimationFrameEvents = {};
105 this._layoutInvalidate = {}; 110 this._layoutInvalidate = {};
106 this._lastScheduleStyleRecalculation = {}; 111 this._lastScheduleStyleRecalculation = {};
107 this._webSocketCreateEvents = {}; 112 this._webSocketCreateEvents = {};
113 this._paintImageEventByPixelRefId = {};
108 114
109 this._lastRecalculateStylesEvent = null; 115 this._lastRecalculateStylesEvent = null;
110 this._currentScriptEvent = null; 116 this._currentScriptEvent = null;
111 this._eventStack = []; 117 this._eventStack = [];
112 }, 118 },
113 119
114 /** 120 /**
115 * @param {!Array.<!WebInspector.TracingModel.Event>} events 121 * @param {!Array.<!WebInspector.TracingModel.Event>} events
116 */ 122 */
117 setEvents: function(events) 123 setEvents: function(events)
(...skipping 29 matching lines...) Expand all
147 153
148 switch (event.name) { 154 switch (event.name) {
149 case recordTypes.CallStack: 155 case recordTypes.CallStack:
150 var lastMainThreadEvent = this._mainThreadEvents.peekLast(); 156 var lastMainThreadEvent = this._mainThreadEvents.peekLast();
151 if (lastMainThreadEvent) 157 if (lastMainThreadEvent)
152 lastMainThreadEvent.stackTrace = event.args.stack; 158 lastMainThreadEvent.stackTrace = event.args.stack;
153 break; 159 break;
154 160
155 case recordTypes.ResourceSendRequest: 161 case recordTypes.ResourceSendRequest:
156 this._sendRequestEvents[event.args.data["requestId"]] = event; 162 this._sendRequestEvents[event.args.data["requestId"]] = event;
163 event.imageURL = event.args.data["url"];
157 break; 164 break;
158 165
159 case recordTypes.ResourceReceiveResponse: 166 case recordTypes.ResourceReceiveResponse:
160 case recordTypes.ResourceReceivedData: 167 case recordTypes.ResourceReceivedData:
161 case recordTypes.ResourceFinish: 168 case recordTypes.ResourceFinish:
162 event.initiator = this._sendRequestEvents[event.args.data["requestId "]]; 169 event.initiator = this._sendRequestEvents[event.args.data["requestId "]];
170 if (event.initiator)
171 event.imageURL = event.initiator.imageURL;
163 break; 172 break;
164 173
165 case recordTypes.TimerInstall: 174 case recordTypes.TimerInstall:
166 this._timerEvents[event.args.data["timerId"]] = event; 175 this._timerEvents[event.args.data["timerId"]] = event;
167 break; 176 break;
168 177
169 case recordTypes.TimerFire: 178 case recordTypes.TimerFire:
170 event.initiator = this._timerEvents[event.args.data["timerId"]]; 179 event.initiator = this._timerEvents[event.args.data["timerId"]];
171 break; 180 break;
172 181
(...skipping 20 matching lines...) Expand all
193 var layoutInitator = event; 202 var layoutInitator = event;
194 var frameId = event.args.frame; 203 var frameId = event.args.frame;
195 if (!this._layoutInvalidate[frameId] && this._lastRecalculateStylesE vent && this._lastRecalculateStylesEvent.endTime > event.startTime) 204 if (!this._layoutInvalidate[frameId] && this._lastRecalculateStylesE vent && this._lastRecalculateStylesEvent.endTime > event.startTime)
196 layoutInitator = this._lastRecalculateStylesEvent.initiator; 205 layoutInitator = this._lastRecalculateStylesEvent.initiator;
197 this._layoutInvalidate[frameId] = layoutInitator; 206 this._layoutInvalidate[frameId] = layoutInitator;
198 break; 207 break;
199 208
200 case recordTypes.Layout: 209 case recordTypes.Layout:
201 var frameId = event.args["beginData"]["frame"]; 210 var frameId = event.args["beginData"]["frame"];
202 event.initiator = this._layoutInvalidate[frameId]; 211 event.initiator = this._layoutInvalidate[frameId];
212 if (event.args["endData"])
yurys 2014/06/02 11:22:24 endData always exists for Layout event, no need to
caseq 2014/06/02 11:57:19 Done.
213 event.backendNodeId = event.args["endData"]["rootNode"];
203 this._layoutInvalidate[frameId] = null; 214 this._layoutInvalidate[frameId] = null;
204 if (this._currentScriptEvent) 215 if (this._currentScriptEvent)
205 event.warning = WebInspector.UIString("Forced synchronous layout is a possible performance bottleneck."); 216 event.warning = WebInspector.UIString("Forced synchronous layout is a possible performance bottleneck.");
206 break; 217 break;
207 218
208 case recordTypes.WebSocketCreate: 219 case recordTypes.WebSocketCreate:
209 this._webSocketCreateEvents[event.args.data["identifier"]] = event; 220 this._webSocketCreateEvents[event.args.data["identifier"]] = event;
210 break; 221 break;
211 222
212 case recordTypes.WebSocketSendHandshakeRequest: 223 case recordTypes.WebSocketSendHandshakeRequest:
213 case recordTypes.WebSocketReceiveHandshakeResponse: 224 case recordTypes.WebSocketReceiveHandshakeResponse:
214 case recordTypes.WebSocketDestroy: 225 case recordTypes.WebSocketDestroy:
215 event.initiator = this._webSocketCreateEvents[event.args.data["ident ifier"]]; 226 event.initiator = this._webSocketCreateEvents[event.args.data["ident ifier"]];
216 break; 227 break;
217 228
218 case recordTypes.EvaluateScript: 229 case recordTypes.EvaluateScript:
219 case recordTypes.FunctionCall: 230 case recordTypes.FunctionCall:
220 if (!this._currentScriptEvent) 231 if (!this._currentScriptEvent)
221 this._currentScriptEvent = event; 232 this._currentScriptEvent = event;
222 break; 233 break;
223 234
224 case recordTypes.SetLayerTreeId: 235 case recordTypes.SetLayerTreeId:
225 this._inspectedTargetLayerTreeId = event.args["layerTreeId"]; 236 this._inspectedTargetLayerTreeId = event.args["layerTreeId"];
226 break; 237 break;
227 238
228 case recordTypes.TracingStartedInPage: 239 case recordTypes.TracingStartedInPage:
229 this._mainThread = event.thread; 240 this._mainThread = event.thread;
230 break; 241 break;
242
243 case recordTypes.Paint:
244 case recordTypes.ScrollLayer:
245 event.backendNodeId = event.args["data"]["nodeId"];
246 break;
247
248 case recordTypes.PaintImage:
249 event.backendNodeId = event.args["data"]["nodeId"];
250 event.imageURL = event.args["data"]["url"];
251 break;
252
253 case recordTypes.DecodeImage:
254 case recordTypes.ResizeImage:
255 var paintImageEvent = this._findAncestorEvent(recordTypes.PaintImage );
256 if (!paintImageEvent) {
257 var decodeLazyPixelRefEvent = this._findAncestorEvent(recordType s.DecodeLazyPixelRef);
258 paintImageEvent = decodeLazyPixelRefEvent && this._paintImageEve ntByPixelRefId[decodeLazyPixelRefEvent.args["LazyPixelRef"]];
259 }
260 if (!paintImageEvent)
261 break;
262 event.backendNodeId = paintImageEvent.backendNodeId;
yurys 2014/06/02 11:22:24 Would it make sense to write initiator instead: e
caseq 2014/06/02 11:57:19 Discussed this offline and decided not to do it no
263 event.imageURL = paintImageEvent.imageURL;
264 break;
265
266 case recordTypes.DrawLazyPixelRef:
267 var paintImageEvent = this._findAncestorEvent(recordTypes.PaintImage );
268 if (!paintImageEvent)
269 break;
270 this._paintImageEventByPixelRefId[event.args["LazyPixelRef"]] = pain tImageEvent;
271 event.backendNodeId = paintImageEvent.backendNodeId;
272 event.imageURL = paintImageEvent.imageURL;
273 break;
231 } 274 }
232 if (this._mainThread === event.thread) 275 if (this._mainThread === event.thread)
233 this._mainThreadEvents.push(event); 276 this._mainThreadEvents.push(event);
277 },
278
279 /**
280 * @param {string} name
281 * @return {?WebInspector.TracingModel.Event}
282 */
283 _findAncestorEvent: function(name)
284 {
285 for (var i = this._eventStack.length - 1; i >= 0; --i) {
286 var event = this._eventStack[i];
287 if (event.name === name)
288 return event;
289 }
290 return null;
234 } 291 }
235 } 292 }
236 293
OLDNEW
« no previous file with comments | « Source/core/rendering/RenderImage.cpp ('k') | Source/devtools/front_end/timeline/TimelineUIUtils.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698