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

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

Issue 311113002: Move inspected target events calculation into TracingTimelineModel (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: rebase 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
« no previous file with comments | « Source/devtools/front_end/timeline/TracingModel.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 * @param {!WebInspector.TracingModel} tracingModel 6 * @param {!WebInspector.TracingModel} tracingModel
7 * @constructor 7 * @constructor
8 */ 8 */
9 WebInspector.TracingTimelineModel = function(tracingModel) 9 WebInspector.TracingTimelineModel = function(tracingModel)
10 { 10 {
11 this._tracingModel = tracingModel; 11 this._tracingModel = tracingModel;
12 this._mainThreadEvents = []; 12 this._mainThreadEvents = [];
13 this._inspectedTargetEvents = [];
13 } 14 }
14 15
15 WebInspector.TracingTimelineModel.RecordType = { 16 WebInspector.TracingTimelineModel.RecordType = {
16 Program: "Program", 17 Program: "Program",
17 EventDispatch: "EventDispatch", 18 EventDispatch: "EventDispatch",
18 19
19 GPUTask: "GPUTask", 20 GPUTask: "GPUTask",
20 21
21 RequestMainThreadFrame: "RequestMainThreadFrame", 22 RequestMainThreadFrame: "RequestMainThreadFrame",
22 BeginFrame: "BeginFrame", 23 BeginFrame: "BeginFrame",
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 81
81 DecodeImage: "Decode Image", 82 DecodeImage: "Decode Image",
82 ResizeImage: "Resize Image", 83 ResizeImage: "Resize Image",
83 DrawLazyPixelRef: "Draw LazyPixelRef", 84 DrawLazyPixelRef: "Draw LazyPixelRef",
84 DecodeLazyPixelRef: "Decode LazyPixelRef", 85 DecodeLazyPixelRef: "Decode LazyPixelRef",
85 86
86 LazyPixelRef: "LazyPixelRef", 87 LazyPixelRef: "LazyPixelRef",
87 LayerTreeHostImplSnapshot: "cc::LayerTreeHostImpl" 88 LayerTreeHostImplSnapshot: "cc::LayerTreeHostImpl"
88 }; 89 };
89 90
90
91 WebInspector.TracingTimelineModel.prototype = { 91 WebInspector.TracingTimelineModel.prototype = {
92 willStartRecordingTraceEvents: function() 92 willStartRecordingTraceEvents: function()
93 { 93 {
94 this._mainThreadEvents = []; 94 this._mainThreadEvents = [];
95 this._inspectedTargetEvents = [];
95 }, 96 },
96 97
97 didStopRecordingTraceEvents: function() 98 didStopRecordingTraceEvents: function()
98 { 99 {
99 var events = this._tracingModel.inspectedTargetEvents(); 100 var events = this._tracingModel.devtoolsMetadataEvents();
101 events.sort(WebInspector.TracingModel.Event.compareStartTime);
102
100 this._resetProcessingState(); 103 this._resetProcessingState();
101 for (var i = 0, length = events.length; i < length; i++) 104 for (var i = 0, length = events.length; i < length; i++) {
102 this._processEvent(events[i]); 105 var event = events[i];
106 var process = event.thread.process();
107 var startTime = event.startTime;
108
109 var endTime = Infinity;
110 if (i + 1 < length)
111 endTime = events[i + 1].startTime;
112
113 process.sortedThreads().forEach(this._processThreadEvents.bind(this, startTime, endTime, event.thread));
114 }
103 this._resetProcessingState(); 115 this._resetProcessingState();
116
117 this._inspectedTargetEvents.sort(WebInspector.TracingModel.Event.compare StartTime);
104 }, 118 },
105 119
106 /** 120 /**
107 * @return {?number} 121 * @return {?number}
108 */ 122 */
109 minimumRecordTime: function() 123 minimumRecordTime: function()
110 { 124 {
111 return this._tracingModel.minimumRecordTime(); 125 return this._tracingModel.minimumRecordTime();
112 }, 126 },
113 127
114 /** 128 /**
115 * @return {?number} 129 * @return {?number}
116 */ 130 */
117 maximumRecordTime: function() 131 maximumRecordTime: function()
118 { 132 {
119 return this._tracingModel.maximumRecordTime(); 133 return this._tracingModel.maximumRecordTime();
120 }, 134 },
121 135
122 /** 136 /**
123 * @return {!Array.<!WebInspector.TracingModel.Event>} 137 * @return {!Array.<!WebInspector.TracingModel.Event>}
124 */ 138 */
125 inspectedTargetEvents: function() 139 inspectedTargetEvents: function()
126 { 140 {
127 return this._tracingModel.inspectedTargetEvents(); 141 return this._inspectedTargetEvents;
128 }, 142 },
129 143
130 /** 144 /**
131 * @return {!Array.<!WebInspector.TracingModel.Event>} 145 * @return {!Array.<!WebInspector.TracingModel.Event>}
132 */ 146 */
133 mainThreadEvents: function() 147 mainThreadEvents: function()
134 { 148 {
135 return this._mainThreadEvents; 149 return this._mainThreadEvents;
136 }, 150 },
137 151
138 _resetProcessingState: function() 152 _resetProcessingState: function()
139 { 153 {
140 this._sendRequestEvents = {}; 154 this._sendRequestEvents = {};
141 this._timerEvents = {}; 155 this._timerEvents = {};
142 this._requestAnimationFrameEvents = {}; 156 this._requestAnimationFrameEvents = {};
143 this._layoutInvalidate = {}; 157 this._layoutInvalidate = {};
144 this._lastScheduleStyleRecalculation = {}; 158 this._lastScheduleStyleRecalculation = {};
145 this._webSocketCreateEvents = {}; 159 this._webSocketCreateEvents = {};
146 this._paintImageEventByPixelRefId = {}; 160 this._paintImageEventByPixelRefId = {};
147 161
148 this._lastRecalculateStylesEvent = null; 162 this._lastRecalculateStylesEvent = null;
149 this._currentScriptEvent = null; 163 this._currentScriptEvent = null;
150 this._eventStack = []; 164 this._eventStack = [];
151 }, 165 },
152 166
153 /** 167 /**
168 * @param {number} startTime
169 * @param {?number} endTime
170 * @param {!WebInspector.TracingModel.Thread} mainThread
171 * @param {!WebInspector.TracingModel.Thread} thread
172 */
173 _processThreadEvents: function(startTime, endTime, mainThread, thread)
174 {
175 var events = thread.events();
176 var length = events.length;
177 var i = events.lowerBound(startTime, function (time, event) { return tim e - event.startTime });
178
179 this._eventStack = [];
180 for (; i < length; i++) {
181 var event = events[i];
182 if (endTime && event.startTime >= endTime)
183 break;
184 this._processEvent(event);
185 if (thread === mainThread)
186 this._mainThreadEvents.push(event);
187 this._inspectedTargetEvents.push(event);
188 }
189 },
190
191 /**
154 * @param {!WebInspector.TracingModel.Event} event 192 * @param {!WebInspector.TracingModel.Event} event
155 */ 193 */
156 _processEvent: function(event) 194 _processEvent: function(event)
157 { 195 {
158 var recordTypes = WebInspector.TracingTimelineModel.RecordType; 196 var recordTypes = WebInspector.TracingTimelineModel.RecordType;
159 197
160 var eventStack = this._eventStack; 198 var eventStack = this._eventStack;
161 while (eventStack.length && eventStack.peekLast().endTime < event.startT ime) 199 while (eventStack.length && eventStack.peekLast().endTime < event.startT ime)
162 eventStack.pop(); 200 eventStack.pop();
163 var duration = event.duration; 201 var duration = event.duration;
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
250 case recordTypes.EvaluateScript: 288 case recordTypes.EvaluateScript:
251 case recordTypes.FunctionCall: 289 case recordTypes.FunctionCall:
252 if (!this._currentScriptEvent) 290 if (!this._currentScriptEvent)
253 this._currentScriptEvent = event; 291 this._currentScriptEvent = event;
254 break; 292 break;
255 293
256 case recordTypes.SetLayerTreeId: 294 case recordTypes.SetLayerTreeId:
257 this._inspectedTargetLayerTreeId = event.args["layerTreeId"]; 295 this._inspectedTargetLayerTreeId = event.args["layerTreeId"];
258 break; 296 break;
259 297
260 case recordTypes.TracingStartedInPage:
261 this._mainThread = event.thread;
262 break;
263
264 case recordTypes.Paint: 298 case recordTypes.Paint:
265 case recordTypes.ScrollLayer: 299 case recordTypes.ScrollLayer:
266 event.backendNodeId = event.args["data"]["nodeId"]; 300 event.backendNodeId = event.args["data"]["nodeId"];
267 break; 301 break;
268 302
269 case recordTypes.PaintImage: 303 case recordTypes.PaintImage:
270 event.backendNodeId = event.args["data"]["nodeId"]; 304 event.backendNodeId = event.args["data"]["nodeId"];
271 event.imageURL = event.args["data"]["url"]; 305 event.imageURL = event.args["data"]["url"];
272 break; 306 break;
273 307
(...skipping 12 matching lines...) Expand all
286 320
287 case recordTypes.DrawLazyPixelRef: 321 case recordTypes.DrawLazyPixelRef:
288 var paintImageEvent = this._findAncestorEvent(recordTypes.PaintImage ); 322 var paintImageEvent = this._findAncestorEvent(recordTypes.PaintImage );
289 if (!paintImageEvent) 323 if (!paintImageEvent)
290 break; 324 break;
291 this._paintImageEventByPixelRefId[event.args["LazyPixelRef"]] = pain tImageEvent; 325 this._paintImageEventByPixelRefId[event.args["LazyPixelRef"]] = pain tImageEvent;
292 event.backendNodeId = paintImageEvent.backendNodeId; 326 event.backendNodeId = paintImageEvent.backendNodeId;
293 event.imageURL = paintImageEvent.imageURL; 327 event.imageURL = paintImageEvent.imageURL;
294 break; 328 break;
295 } 329 }
296 if (this._mainThread === event.thread)
297 this._mainThreadEvents.push(event);
298 }, 330 },
299 331
300 /** 332 /**
301 * @param {string} name 333 * @param {string} name
302 * @return {?WebInspector.TracingModel.Event} 334 * @return {?WebInspector.TracingModel.Event}
303 */ 335 */
304 _findAncestorEvent: function(name) 336 _findAncestorEvent: function(name)
305 { 337 {
306 for (var i = this._eventStack.length - 1; i >= 0; --i) { 338 for (var i = this._eventStack.length - 1; i >= 0; --i) {
307 var event = this._eventStack[i]; 339 var event = this._eventStack[i];
308 if (event.name === name) 340 if (event.name === name)
309 return event; 341 return event;
310 } 342 }
311 return null; 343 return null;
312 } 344 }
313 } 345 }
314 346
OLDNEW
« no previous file with comments | « Source/devtools/front_end/timeline/TracingModel.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698