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

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: skip check for presence of endData in Layout 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 event.backendNodeId = event.args["endData"]["rootNode"];
203 this._layoutInvalidate[frameId] = null; 213 this._layoutInvalidate[frameId] = null;
204 if (this._currentScriptEvent) 214 if (this._currentScriptEvent)
205 event.warning = WebInspector.UIString("Forced synchronous layout is a possible performance bottleneck."); 215 event.warning = WebInspector.UIString("Forced synchronous layout is a possible performance bottleneck.");
206 break; 216 break;
207 217
208 case recordTypes.WebSocketCreate: 218 case recordTypes.WebSocketCreate:
209 this._webSocketCreateEvents[event.args.data["identifier"]] = event; 219 this._webSocketCreateEvents[event.args.data["identifier"]] = event;
210 break; 220 break;
211 221
212 case recordTypes.WebSocketSendHandshakeRequest: 222 case recordTypes.WebSocketSendHandshakeRequest:
213 case recordTypes.WebSocketReceiveHandshakeResponse: 223 case recordTypes.WebSocketReceiveHandshakeResponse:
214 case recordTypes.WebSocketDestroy: 224 case recordTypes.WebSocketDestroy:
215 event.initiator = this._webSocketCreateEvents[event.args.data["ident ifier"]]; 225 event.initiator = this._webSocketCreateEvents[event.args.data["ident ifier"]];
216 break; 226 break;
217 227
218 case recordTypes.EvaluateScript: 228 case recordTypes.EvaluateScript:
219 case recordTypes.FunctionCall: 229 case recordTypes.FunctionCall:
220 if (!this._currentScriptEvent) 230 if (!this._currentScriptEvent)
221 this._currentScriptEvent = event; 231 this._currentScriptEvent = event;
222 break; 232 break;
223 233
224 case recordTypes.SetLayerTreeId: 234 case recordTypes.SetLayerTreeId:
225 this._inspectedTargetLayerTreeId = event.args["layerTreeId"]; 235 this._inspectedTargetLayerTreeId = event.args["layerTreeId"];
226 break; 236 break;
227 237
228 case recordTypes.TracingStartedInPage: 238 case recordTypes.TracingStartedInPage:
229 this._mainThread = event.thread; 239 this._mainThread = event.thread;
230 break; 240 break;
241
242 case recordTypes.Paint:
243 case recordTypes.ScrollLayer:
244 event.backendNodeId = event.args["data"]["nodeId"];
245 break;
246
247 case recordTypes.PaintImage:
248 event.backendNodeId = event.args["data"]["nodeId"];
249 event.imageURL = event.args["data"]["url"];
250 break;
251
252 case recordTypes.DecodeImage:
253 case recordTypes.ResizeImage:
254 var paintImageEvent = this._findAncestorEvent(recordTypes.PaintImage );
255 if (!paintImageEvent) {
256 var decodeLazyPixelRefEvent = this._findAncestorEvent(recordType s.DecodeLazyPixelRef);
257 paintImageEvent = decodeLazyPixelRefEvent && this._paintImageEve ntByPixelRefId[decodeLazyPixelRefEvent.args["LazyPixelRef"]];
258 }
259 if (!paintImageEvent)
260 break;
261 event.backendNodeId = paintImageEvent.backendNodeId;
262 event.imageURL = paintImageEvent.imageURL;
263 break;
264
265 case recordTypes.DrawLazyPixelRef:
266 var paintImageEvent = this._findAncestorEvent(recordTypes.PaintImage );
267 if (!paintImageEvent)
268 break;
269 this._paintImageEventByPixelRefId[event.args["LazyPixelRef"]] = pain tImageEvent;
270 event.backendNodeId = paintImageEvent.backendNodeId;
271 event.imageURL = paintImageEvent.imageURL;
272 break;
231 } 273 }
232 if (this._mainThread === event.thread) 274 if (this._mainThread === event.thread)
233 this._mainThreadEvents.push(event); 275 this._mainThreadEvents.push(event);
276 },
277
278 /**
279 * @param {string} name
280 * @return {?WebInspector.TracingModel.Event}
281 */
282 _findAncestorEvent: function(name)
283 {
284 for (var i = this._eventStack.length - 1; i >= 0; --i) {
285 var event = this._eventStack[i];
286 if (event.name === name)
287 return event;
288 }
289 return null;
234 } 290 }
235 } 291 }
236 292
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