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

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/timeline_model/TimelineFrameModel.js

Issue 2493373002: DevTools: rename WebInspector into modules. (Closed)
Patch Set: for bots Created 4 years, 1 month 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 13 matching lines...) Expand all
24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */ 29 */
30 30
31 /** 31 /**
32 * @unrestricted 32 * @unrestricted
33 */ 33 */
34 WebInspector.TimelineFrameModel = class { 34 TimelineModel.TimelineFrameModel = class {
35 /** 35 /**
36 * @param {function(!WebInspector.TracingModel.Event):string} categoryMapper 36 * @param {function(!SDK.TracingModel.Event):string} categoryMapper
37 */ 37 */
38 constructor(categoryMapper) { 38 constructor(categoryMapper) {
39 this._categoryMapper = categoryMapper; 39 this._categoryMapper = categoryMapper;
40 this.reset(); 40 this.reset();
41 } 41 }
42 42
43 /** 43 /**
44 * @return {!Array.<!WebInspector.TimelineFrame>} 44 * @return {!Array.<!TimelineModel.TimelineFrame>}
45 */ 45 */
46 frames() { 46 frames() {
47 return this._frames; 47 return this._frames;
48 } 48 }
49 49
50 /** 50 /**
51 * @param {number} startTime 51 * @param {number} startTime
52 * @param {number} endTime 52 * @param {number} endTime
53 * @return {!Array.<!WebInspector.TimelineFrame>} 53 * @return {!Array.<!TimelineModel.TimelineFrame>}
54 */ 54 */
55 filteredFrames(startTime, endTime) { 55 filteredFrames(startTime, endTime) {
56 /** 56 /**
57 * @param {number} value 57 * @param {number} value
58 * @param {!WebInspector.TimelineFrame} object 58 * @param {!TimelineModel.TimelineFrame} object
59 * @return {number} 59 * @return {number}
60 */ 60 */
61 function compareStartTime(value, object) { 61 function compareStartTime(value, object) {
62 return value - object.startTime; 62 return value - object.startTime;
63 } 63 }
64 /** 64 /**
65 * @param {number} value 65 * @param {number} value
66 * @param {!WebInspector.TimelineFrame} object 66 * @param {!TimelineModel.TimelineFrame} object
67 * @return {number} 67 * @return {number}
68 */ 68 */
69 function compareEndTime(value, object) { 69 function compareEndTime(value, object) {
70 return value - object.endTime; 70 return value - object.endTime;
71 } 71 }
72 var frames = this._frames; 72 var frames = this._frames;
73 var firstFrame = frames.lowerBound(startTime, compareEndTime); 73 var firstFrame = frames.lowerBound(startTime, compareEndTime);
74 var lastFrame = frames.lowerBound(endTime, compareStartTime); 74 var lastFrame = frames.lowerBound(endTime, compareStartTime);
75 return frames.slice(firstFrame, lastFrame); 75 return frames.slice(firstFrame, lastFrame);
76 } 76 }
77 77
78 /** 78 /**
79 * @param {!WebInspector.TracingModel.Event} rasterTask 79 * @param {!SDK.TracingModel.Event} rasterTask
80 * @return {boolean} 80 * @return {boolean}
81 */ 81 */
82 hasRasterTile(rasterTask) { 82 hasRasterTile(rasterTask) {
83 var data = rasterTask.args['tileData']; 83 var data = rasterTask.args['tileData'];
84 if (!data) 84 if (!data)
85 return false; 85 return false;
86 var frameId = data['sourceFrameNumber']; 86 var frameId = data['sourceFrameNumber'];
87 var frame = frameId && this._frameById[frameId]; 87 var frame = frameId && this._frameById[frameId];
88 if (!frame || !frame.layerTree) 88 if (!frame || !frame.layerTree)
89 return false; 89 return false;
90 return true; 90 return true;
91 } 91 }
92 92
93 /** 93 /**
94 * @param {!WebInspector.TracingModel.Event} rasterTask 94 * @param {!SDK.TracingModel.Event} rasterTask
95 * @return Promise<?{rect: !Protocol.DOM.Rect, snapshot: !WebInspector.PaintPr ofilerSnapshot}>} 95 * @return Promise<?{rect: !Protocol.DOM.Rect, snapshot: !SDK.PaintProfilerSna pshot}>}
96 */ 96 */
97 rasterTilePromise(rasterTask) { 97 rasterTilePromise(rasterTask) {
98 if (!this._target) 98 if (!this._target)
99 return Promise.resolve(null); 99 return Promise.resolve(null);
100 var data = rasterTask.args['tileData']; 100 var data = rasterTask.args['tileData'];
101 var frameId = data['sourceFrameNumber']; 101 var frameId = data['sourceFrameNumber'];
102 var tileId = data['tileId'] && data['tileId']['id_ref']; 102 var tileId = data['tileId'] && data['tileId']['id_ref'];
103 var frame = frameId && this._frameById[frameId]; 103 var frame = frameId && this._frameById[frameId];
104 if (!frame || !frame.layerTree || !tileId) 104 if (!frame || !frame.layerTree || !tileId)
105 return Promise.resolve(null); 105 return Promise.resolve(null);
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 handleCompositeLayers() { 179 handleCompositeLayers() {
180 if (!this._framePendingCommit) 180 if (!this._framePendingCommit)
181 return; 181 return;
182 this._framePendingActivation = this._framePendingCommit; 182 this._framePendingActivation = this._framePendingCommit;
183 this._framePendingCommit = null; 183 this._framePendingCommit = null;
184 this._mainFrameRequested = false; 184 this._mainFrameRequested = false;
185 this._mainFrameCommitted = true; 185 this._mainFrameCommitted = true;
186 } 186 }
187 187
188 /** 188 /**
189 * @param {!WebInspector.TracingFrameLayerTree} layerTree 189 * @param {!TimelineModel.TracingFrameLayerTree} layerTree
190 */ 190 */
191 handleLayerTreeSnapshot(layerTree) { 191 handleLayerTreeSnapshot(layerTree) {
192 this._lastLayerTree = layerTree; 192 this._lastLayerTree = layerTree;
193 } 193 }
194 194
195 /** 195 /**
196 * @param {number} startTime 196 * @param {number} startTime
197 * @param {boolean} needsBeginFrame 197 * @param {boolean} needsBeginFrame
198 */ 198 */
199 handleNeedFrameChanged(startTime, needsBeginFrame) { 199 handleNeedFrameChanged(startTime, needsBeginFrame) {
200 if (needsBeginFrame) 200 if (needsBeginFrame)
201 this._lastNeedsBeginFrame = startTime; 201 this._lastNeedsBeginFrame = startTime;
202 } 202 }
203 203
204 /** 204 /**
205 * @param {number} startTime 205 * @param {number} startTime
206 */ 206 */
207 _startFrame(startTime) { 207 _startFrame(startTime) {
208 if (this._lastFrame) 208 if (this._lastFrame)
209 this._flushFrame(this._lastFrame, startTime); 209 this._flushFrame(this._lastFrame, startTime);
210 this._lastFrame = new WebInspector.TimelineFrame(startTime, startTime - this ._minimumRecordTime); 210 this._lastFrame = new TimelineModel.TimelineFrame(startTime, startTime - thi s._minimumRecordTime);
211 } 211 }
212 212
213 /** 213 /**
214 * @param {!WebInspector.TimelineFrame} frame 214 * @param {!TimelineModel.TimelineFrame} frame
215 * @param {number} endTime 215 * @param {number} endTime
216 */ 216 */
217 _flushFrame(frame, endTime) { 217 _flushFrame(frame, endTime) {
218 frame._setLayerTree(this._lastLayerTree); 218 frame._setLayerTree(this._lastLayerTree);
219 frame._setEndTime(endTime); 219 frame._setEndTime(endTime);
220 if (this._lastLayerTree) 220 if (this._lastLayerTree)
221 this._lastLayerTree._setPaints(frame._paints); 221 this._lastLayerTree._setPaints(frame._paints);
222 if (this._frames.length && (frame.startTime !== this._frames.peekLast().endT ime || frame.startTime > frame.endTime)) 222 if (this._frames.length && (frame.startTime !== this._frames.peekLast().endT ime || frame.startTime > frame.endTime))
223 console.assert( 223 console.assert(
224 false, `Inconsistent frame time for frame ${this._frames.length} (${fr ame.startTime} - ${frame.endTime})`); 224 false, `Inconsistent frame time for frame ${this._frames.length} (${fr ame.startTime} - ${frame.endTime})`);
225 this._frames.push(frame); 225 this._frames.push(frame);
226 if (typeof frame._mainFrameId === 'number') 226 if (typeof frame._mainFrameId === 'number')
227 this._frameById[frame._mainFrameId] = frame; 227 this._frameById[frame._mainFrameId] = frame;
228 } 228 }
229 229
230 _commitPendingFrame() { 230 _commitPendingFrame() {
231 this._lastFrame._addTimeForCategories(this._framePendingActivation.timeByCat egory); 231 this._lastFrame._addTimeForCategories(this._framePendingActivation.timeByCat egory);
232 this._lastFrame._paints = this._framePendingActivation.paints; 232 this._lastFrame._paints = this._framePendingActivation.paints;
233 this._lastFrame._mainFrameId = this._framePendingActivation.mainFrameId; 233 this._lastFrame._mainFrameId = this._framePendingActivation.mainFrameId;
234 this._framePendingActivation = null; 234 this._framePendingActivation = null;
235 } 235 }
236 236
237 /** 237 /**
238 * @param {!Array.<string>} types 238 * @param {!Array.<string>} types
239 * @param {!WebInspector.TimelineModel.Record} record 239 * @param {!TimelineModel.TimelineModel.Record} record
240 * @return {?WebInspector.TimelineModel.Record} record 240 * @return {?TimelineModel.TimelineModel.Record} record
241 */ 241 */
242 _findRecordRecursively(types, record) { 242 _findRecordRecursively(types, record) {
243 if (types.indexOf(record.type()) >= 0) 243 if (types.indexOf(record.type()) >= 0)
244 return record; 244 return record;
245 if (!record.children()) 245 if (!record.children())
246 return null; 246 return null;
247 for (var i = 0; i < record.children().length; ++i) { 247 for (var i = 0; i < record.children().length; ++i) {
248 var result = this._findRecordRecursively(types, record.children()[i]); 248 var result = this._findRecordRecursively(types, record.children()[i]);
249 if (result) 249 if (result)
250 return result; 250 return result;
251 } 251 }
252 return null; 252 return null;
253 } 253 }
254 254
255 /** 255 /**
256 * @param {?WebInspector.Target} target 256 * @param {?SDK.Target} target
257 * @param {!Array.<!WebInspector.TracingModel.Event>} events 257 * @param {!Array.<!SDK.TracingModel.Event>} events
258 * @param {string} sessionId 258 * @param {string} sessionId
259 */ 259 */
260 addTraceEvents(target, events, sessionId) { 260 addTraceEvents(target, events, sessionId) {
261 this._target = target; 261 this._target = target;
262 this._sessionId = sessionId; 262 this._sessionId = sessionId;
263 if (!events.length) 263 if (!events.length)
264 return; 264 return;
265 if (events[0].startTime < this._minimumRecordTime) 265 if (events[0].startTime < this._minimumRecordTime)
266 this._minimumRecordTime = events[0].startTime; 266 this._minimumRecordTime = events[0].startTime;
267 for (var i = 0; i < events.length; ++i) 267 for (var i = 0; i < events.length; ++i)
268 this._addTraceEvent(events[i]); 268 this._addTraceEvent(events[i]);
269 } 269 }
270 270
271 /** 271 /**
272 * @param {!WebInspector.TracingModel.Event} event 272 * @param {!SDK.TracingModel.Event} event
273 */ 273 */
274 _addTraceEvent(event) { 274 _addTraceEvent(event) {
275 var eventNames = WebInspector.TimelineModel.RecordType; 275 var eventNames = TimelineModel.TimelineModel.RecordType;
276 276
277 if (event.name === eventNames.SetLayerTreeId) { 277 if (event.name === eventNames.SetLayerTreeId) {
278 var sessionId = event.args['sessionId'] || event.args['data']['sessionId'] ; 278 var sessionId = event.args['sessionId'] || event.args['data']['sessionId'] ;
279 if (this._sessionId === sessionId) 279 if (this._sessionId === sessionId)
280 this._layerTreeId = event.args['layerTreeId'] || event.args['data']['lay erTreeId']; 280 this._layerTreeId = event.args['layerTreeId'] || event.args['data']['lay erTreeId'];
281 } else if (event.name === eventNames.TracingStartedInPage) { 281 } else if (event.name === eventNames.TracingStartedInPage) {
282 this._mainThread = event.thread; 282 this._mainThread = event.thread;
283 } else if ( 283 } else if (
284 event.phase === WebInspector.TracingModel.Phase.SnapshotObject && 284 event.phase === SDK.TracingModel.Phase.SnapshotObject &&
285 event.name === eventNames.LayerTreeHostImplSnapshot && parseInt(event.id , 0) === this._layerTreeId) { 285 event.name === eventNames.LayerTreeHostImplSnapshot && parseInt(event.id , 0) === this._layerTreeId) {
286 var snapshot = /** @type {!WebInspector.TracingModel.ObjectSnapshot} */ (e vent); 286 var snapshot = /** @type {!SDK.TracingModel.ObjectSnapshot} */ (event);
287 this.handleLayerTreeSnapshot(new WebInspector.TracingFrameLayerTree(this._ target, snapshot)); 287 this.handleLayerTreeSnapshot(new TimelineModel.TracingFrameLayerTree(this. _target, snapshot));
288 } else { 288 } else {
289 this._processCompositorEvents(event); 289 this._processCompositorEvents(event);
290 if (event.thread === this._mainThread) 290 if (event.thread === this._mainThread)
291 this._addMainThreadTraceEvent(event); 291 this._addMainThreadTraceEvent(event);
292 else if (this._lastFrame && event.selfTime && !WebInspector.TracingModel.i sTopLevelEvent(event)) 292 else if (this._lastFrame && event.selfTime && !SDK.TracingModel.isTopLevel Event(event))
293 this._lastFrame._addTimeForCategory(this._categoryMapper(event), event.s elfTime); 293 this._lastFrame._addTimeForCategory(this._categoryMapper(event), event.s elfTime);
294 } 294 }
295 } 295 }
296 296
297 /** 297 /**
298 * @param {!WebInspector.TracingModel.Event} event 298 * @param {!SDK.TracingModel.Event} event
299 */ 299 */
300 _processCompositorEvents(event) { 300 _processCompositorEvents(event) {
301 var eventNames = WebInspector.TimelineModel.RecordType; 301 var eventNames = TimelineModel.TimelineModel.RecordType;
302 302
303 if (event.args['layerTreeId'] !== this._layerTreeId) 303 if (event.args['layerTreeId'] !== this._layerTreeId)
304 return; 304 return;
305 305
306 var timestamp = event.startTime; 306 var timestamp = event.startTime;
307 if (event.name === eventNames.BeginFrame) 307 if (event.name === eventNames.BeginFrame)
308 this.handleBeginFrame(timestamp); 308 this.handleBeginFrame(timestamp);
309 else if (event.name === eventNames.DrawFrame) 309 else if (event.name === eventNames.DrawFrame)
310 this.handleDrawFrame(timestamp); 310 this.handleDrawFrame(timestamp);
311 else if (event.name === eventNames.ActivateLayerTree) 311 else if (event.name === eventNames.ActivateLayerTree)
312 this.handleActivateLayerTree(); 312 this.handleActivateLayerTree();
313 else if (event.name === eventNames.RequestMainThreadFrame) 313 else if (event.name === eventNames.RequestMainThreadFrame)
314 this.handleRequestMainThreadFrame(); 314 this.handleRequestMainThreadFrame();
315 else if (event.name === eventNames.NeedsBeginFrameChanged) 315 else if (event.name === eventNames.NeedsBeginFrameChanged)
316 this.handleNeedFrameChanged(timestamp, event.args['data'] && event.args['d ata']['needsBeginFrame']); 316 this.handleNeedFrameChanged(timestamp, event.args['data'] && event.args['d ata']['needsBeginFrame']);
317 } 317 }
318 318
319 /** 319 /**
320 * @param {!WebInspector.TracingModel.Event} event 320 * @param {!SDK.TracingModel.Event} event
321 */ 321 */
322 _addMainThreadTraceEvent(event) { 322 _addMainThreadTraceEvent(event) {
323 var eventNames = WebInspector.TimelineModel.RecordType; 323 var eventNames = TimelineModel.TimelineModel.RecordType;
324 var timestamp = event.startTime; 324 var timestamp = event.startTime;
325 var selfTime = event.selfTime || 0; 325 var selfTime = event.selfTime || 0;
326 326
327 if (WebInspector.TracingModel.isTopLevelEvent(event)) { 327 if (SDK.TracingModel.isTopLevelEvent(event)) {
328 this._currentTaskTimeByCategory = {}; 328 this._currentTaskTimeByCategory = {};
329 this._lastTaskBeginTime = event.startTime; 329 this._lastTaskBeginTime = event.startTime;
330 } 330 }
331 if (!this._framePendingCommit && WebInspector.TimelineFrameModel._mainFrameM arkers.indexOf(event.name) >= 0) 331 if (!this._framePendingCommit && TimelineModel.TimelineFrameModel._mainFrame Markers.indexOf(event.name) >= 0)
332 this._framePendingCommit = 332 this._framePendingCommit =
333 new WebInspector.PendingFrame(this._lastTaskBeginTime || event.startTi me, this._currentTaskTimeByCategory); 333 new TimelineModel.PendingFrame(this._lastTaskBeginTime || event.startT ime, this._currentTaskTimeByCategory);
334 if (!this._framePendingCommit) { 334 if (!this._framePendingCommit) {
335 this._addTimeForCategory(this._currentTaskTimeByCategory, event); 335 this._addTimeForCategory(this._currentTaskTimeByCategory, event);
336 return; 336 return;
337 } 337 }
338 this._addTimeForCategory(this._framePendingCommit.timeByCategory, event); 338 this._addTimeForCategory(this._framePendingCommit.timeByCategory, event);
339 339
340 if (event.name === eventNames.BeginMainThreadFrame && event.args['data'] && event.args['data']['frameId']) 340 if (event.name === eventNames.BeginMainThreadFrame && event.args['data'] && event.args['data']['frameId'])
341 this._framePendingCommit.mainFrameId = event.args['data']['frameId']; 341 this._framePendingCommit.mainFrameId = event.args['data']['frameId'];
342 if (event.name === eventNames.Paint && event.args['data']['layerId'] && WebI nspector.TimelineData.forEvent(event).picture && this._target) 342 if (event.name === eventNames.Paint && event.args['data']['layerId'] && Time lineModel.TimelineData.forEvent(event).picture && this._target)
343 this._framePendingCommit.paints.push(new WebInspector.LayerPaintEvent(even t, this._target)); 343 this._framePendingCommit.paints.push(new TimelineModel.LayerPaintEvent(eve nt, this._target));
344 if (event.name === eventNames.CompositeLayers && event.args['layerTreeId'] = == this._layerTreeId) 344 if (event.name === eventNames.CompositeLayers && event.args['layerTreeId'] = == this._layerTreeId)
345 this.handleCompositeLayers(); 345 this.handleCompositeLayers();
346 } 346 }
347 347
348 /** 348 /**
349 * @param {!Object.<string, number>} timeByCategory 349 * @param {!Object.<string, number>} timeByCategory
350 * @param {!WebInspector.TracingModel.Event} event 350 * @param {!SDK.TracingModel.Event} event
351 */ 351 */
352 _addTimeForCategory(timeByCategory, event) { 352 _addTimeForCategory(timeByCategory, event) {
353 if (!event.selfTime) 353 if (!event.selfTime)
354 return; 354 return;
355 var categoryName = this._categoryMapper(event); 355 var categoryName = this._categoryMapper(event);
356 timeByCategory[categoryName] = (timeByCategory[categoryName] || 0) + event.s elfTime; 356 timeByCategory[categoryName] = (timeByCategory[categoryName] || 0) + event.s elfTime;
357 } 357 }
358 }; 358 };
359 359
360 WebInspector.TimelineFrameModel._mainFrameMarkers = [ 360 TimelineModel.TimelineFrameModel._mainFrameMarkers = [
361 WebInspector.TimelineModel.RecordType.ScheduleStyleRecalculation, 361 TimelineModel.TimelineModel.RecordType.ScheduleStyleRecalculation,
362 WebInspector.TimelineModel.RecordType.InvalidateLayout, WebInspector.TimelineM odel.RecordType.BeginMainThreadFrame, 362 TimelineModel.TimelineModel.RecordType.InvalidateLayout, TimelineModel.Timelin eModel.RecordType.BeginMainThreadFrame,
363 WebInspector.TimelineModel.RecordType.ScrollLayer 363 TimelineModel.TimelineModel.RecordType.ScrollLayer
364 ]; 364 ];
365 365
366 /** 366 /**
367 * @unrestricted 367 * @unrestricted
368 */ 368 */
369 WebInspector.TracingFrameLayerTree = class { 369 TimelineModel.TracingFrameLayerTree = class {
370 /** 370 /**
371 * @param {!WebInspector.Target} target 371 * @param {!SDK.Target} target
372 * @param {!WebInspector.TracingModel.ObjectSnapshot} snapshot 372 * @param {!SDK.TracingModel.ObjectSnapshot} snapshot
373 */ 373 */
374 constructor(target, snapshot) { 374 constructor(target, snapshot) {
375 this._target = target; 375 this._target = target;
376 this._snapshot = snapshot; 376 this._snapshot = snapshot;
377 /** @type {!Array<!WebInspector.LayerPaintEvent>|undefined} */ 377 /** @type {!Array<!TimelineModel.LayerPaintEvent>|undefined} */
378 this._paints; 378 this._paints;
379 } 379 }
380 380
381 /** 381 /**
382 * @return {!Promise<?WebInspector.TracingLayerTree>} 382 * @return {!Promise<?TimelineModel.TracingLayerTree>}
383 */ 383 */
384 layerTreePromise() { 384 layerTreePromise() {
385 return this._snapshot.objectPromise().then(result => { 385 return this._snapshot.objectPromise().then(result => {
386 if (!result) 386 if (!result)
387 return null; 387 return null;
388 var viewport = result['device_viewport_size']; 388 var viewport = result['device_viewport_size'];
389 var tiles = result['active_tiles']; 389 var tiles = result['active_tiles'];
390 var rootLayer = result['active_tree']['root_layer']; 390 var rootLayer = result['active_tree']['root_layer'];
391 var layers = result['active_tree']['layers']; 391 var layers = result['active_tree']['layers'];
392 var layerTree = new WebInspector.TracingLayerTree(this._target); 392 var layerTree = new TimelineModel.TracingLayerTree(this._target);
393 layerTree.setViewportSize(viewport); 393 layerTree.setViewportSize(viewport);
394 layerTree.setTiles(tiles); 394 layerTree.setTiles(tiles);
395 return new Promise( 395 return new Promise(
396 resolve => layerTree.setLayers(rootLayer, layers, this._paints || [], () => resolve(layerTree))); 396 resolve => layerTree.setLayers(rootLayer, layers, this._paints || [], () => resolve(layerTree)));
397 }); 397 });
398 } 398 }
399 399
400 /** 400 /**
401 * @return {!Array<!WebInspector.LayerPaintEvent>} 401 * @return {!Array<!TimelineModel.LayerPaintEvent>}
402 */ 402 */
403 paints() { 403 paints() {
404 return this._paints || []; 404 return this._paints || [];
405 } 405 }
406 406
407 /** 407 /**
408 * @param {!Array<!WebInspector.LayerPaintEvent>} paints 408 * @param {!Array<!TimelineModel.LayerPaintEvent>} paints
409 */ 409 */
410 _setPaints(paints) { 410 _setPaints(paints) {
411 this._paints = paints; 411 this._paints = paints;
412 } 412 }
413 }; 413 };
414 414
415 /** 415 /**
416 * @unrestricted 416 * @unrestricted
417 */ 417 */
418 WebInspector.TimelineFrame = class { 418 TimelineModel.TimelineFrame = class {
419 /** 419 /**
420 * @param {number} startTime 420 * @param {number} startTime
421 * @param {number} startTimeOffset 421 * @param {number} startTimeOffset
422 */ 422 */
423 constructor(startTime, startTimeOffset) { 423 constructor(startTime, startTimeOffset) {
424 this.startTime = startTime; 424 this.startTime = startTime;
425 this.startTimeOffset = startTimeOffset; 425 this.startTimeOffset = startTimeOffset;
426 this.endTime = this.startTime; 426 this.endTime = this.startTime;
427 this.duration = 0; 427 this.duration = 0;
428 this.timeByCategory = {}; 428 this.timeByCategory = {};
429 this.cpuTime = 0; 429 this.cpuTime = 0;
430 this.idle = false; 430 this.idle = false;
431 /** @type {?WebInspector.TracingFrameLayerTree} */ 431 /** @type {?TimelineModel.TracingFrameLayerTree} */
432 this.layerTree = null; 432 this.layerTree = null;
433 /** @type {!Array.<!WebInspector.LayerPaintEvent>} */ 433 /** @type {!Array.<!TimelineModel.LayerPaintEvent>} */
434 this._paints = []; 434 this._paints = [];
435 /** @type {number|undefined} */ 435 /** @type {number|undefined} */
436 this._mainFrameId = undefined; 436 this._mainFrameId = undefined;
437 } 437 }
438 438
439 /** 439 /**
440 * @return {boolean} 440 * @return {boolean}
441 */ 441 */
442 hasWarnings() { 442 hasWarnings() {
443 var /** @const */ longFrameDurationThresholdMs = 22; 443 var /** @const */ longFrameDurationThresholdMs = 22;
444 return !this.idle && this.duration > longFrameDurationThresholdMs; 444 return !this.idle && this.duration > longFrameDurationThresholdMs;
445 } 445 }
446 446
447 /** 447 /**
448 * @param {number} endTime 448 * @param {number} endTime
449 */ 449 */
450 _setEndTime(endTime) { 450 _setEndTime(endTime) {
451 this.endTime = endTime; 451 this.endTime = endTime;
452 this.duration = this.endTime - this.startTime; 452 this.duration = this.endTime - this.startTime;
453 } 453 }
454 454
455 /** 455 /**
456 * @param {?WebInspector.TracingFrameLayerTree} layerTree 456 * @param {?TimelineModel.TracingFrameLayerTree} layerTree
457 */ 457 */
458 _setLayerTree(layerTree) { 458 _setLayerTree(layerTree) {
459 this.layerTree = layerTree; 459 this.layerTree = layerTree;
460 } 460 }
461 461
462 /** 462 /**
463 * @param {!Object} timeByCategory 463 * @param {!Object} timeByCategory
464 */ 464 */
465 _addTimeForCategories(timeByCategory) { 465 _addTimeForCategories(timeByCategory) {
466 for (var category in timeByCategory) 466 for (var category in timeByCategory)
467 this._addTimeForCategory(category, timeByCategory[category]); 467 this._addTimeForCategory(category, timeByCategory[category]);
468 } 468 }
469 469
470 /** 470 /**
471 * @param {string} category 471 * @param {string} category
472 * @param {number} time 472 * @param {number} time
473 */ 473 */
474 _addTimeForCategory(category, time) { 474 _addTimeForCategory(category, time) {
475 this.timeByCategory[category] = (this.timeByCategory[category] || 0) + time; 475 this.timeByCategory[category] = (this.timeByCategory[category] || 0) + time;
476 this.cpuTime += time; 476 this.cpuTime += time;
477 } 477 }
478 }; 478 };
479 479
480 /** 480 /**
481 * @unrestricted 481 * @unrestricted
482 */ 482 */
483 WebInspector.LayerPaintEvent = class { 483 TimelineModel.LayerPaintEvent = class {
484 /** 484 /**
485 * @param {!WebInspector.TracingModel.Event} event 485 * @param {!SDK.TracingModel.Event} event
486 * @param {?WebInspector.Target} target 486 * @param {?SDK.Target} target
487 */ 487 */
488 constructor(event, target) { 488 constructor(event, target) {
489 this._event = event; 489 this._event = event;
490 this._target = target; 490 this._target = target;
491 } 491 }
492 492
493 /** 493 /**
494 * @return {string} 494 * @return {string}
495 */ 495 */
496 layerId() { 496 layerId() {
497 return this._event.args['data']['layerId']; 497 return this._event.args['data']['layerId'];
498 } 498 }
499 499
500 /** 500 /**
501 * @return {!WebInspector.TracingModel.Event} 501 * @return {!SDK.TracingModel.Event}
502 */ 502 */
503 event() { 503 event() {
504 return this._event; 504 return this._event;
505 } 505 }
506 506
507 /** 507 /**
508 * @return {!Promise<?{rect: !Array<number>, serializedPicture: string}>} 508 * @return {!Promise<?{rect: !Array<number>, serializedPicture: string}>}
509 */ 509 */
510 picturePromise() { 510 picturePromise() {
511 var picture = WebInspector.TimelineData.forEvent(this._event).picture; 511 var picture = TimelineModel.TimelineData.forEvent(this._event).picture;
512 return picture.objectPromise().then(result => { 512 return picture.objectPromise().then(result => {
513 if (!result) 513 if (!result)
514 return null; 514 return null;
515 var rect = result['params'] && result['params']['layer_rect']; 515 var rect = result['params'] && result['params']['layer_rect'];
516 var picture = result['skp64']; 516 var picture = result['skp64'];
517 return rect && picture ? {rect: rect, serializedPicture: picture} : null; 517 return rect && picture ? {rect: rect, serializedPicture: picture} : null;
518 }); 518 });
519 } 519 }
520 520
521 /** 521 /**
522 * @return !Promise<?{rect: !Array<number>, snapshot: !WebInspector.PaintProfi lerSnapshot}>} 522 * @return !Promise<?{rect: !Array<number>, snapshot: !SDK.PaintProfilerSnapsh ot}>}
523 */ 523 */
524 snapshotPromise() { 524 snapshotPromise() {
525 return this.picturePromise().then(picture => { 525 return this.picturePromise().then(picture => {
526 if (!picture || !this._target) 526 if (!picture || !this._target)
527 return null; 527 return null;
528 return WebInspector.PaintProfilerSnapshot.load(this._target, picture.seria lizedPicture) 528 return SDK.PaintProfilerSnapshot.load(this._target, picture.serializedPict ure)
529 .then(snapshot => snapshot ? {rect: picture.rect, snapshot: snapshot} : null); 529 .then(snapshot => snapshot ? {rect: picture.rect, snapshot: snapshot} : null);
530 }); 530 });
531 } 531 }
532 }; 532 };
533 533
534 /** 534 /**
535 * @unrestricted 535 * @unrestricted
536 */ 536 */
537 WebInspector.PendingFrame = class { 537 TimelineModel.PendingFrame = class {
538 /** 538 /**
539 * @param {number} triggerTime 539 * @param {number} triggerTime
540 * @param {!Object.<string, number>} timeByCategory 540 * @param {!Object.<string, number>} timeByCategory
541 */ 541 */
542 constructor(triggerTime, timeByCategory) { 542 constructor(triggerTime, timeByCategory) {
543 /** @type {!Object.<string, number>} */ 543 /** @type {!Object.<string, number>} */
544 this.timeByCategory = timeByCategory; 544 this.timeByCategory = timeByCategory;
545 /** @type {!Array.<!WebInspector.LayerPaintEvent>} */ 545 /** @type {!Array.<!TimelineModel.LayerPaintEvent>} */
546 this.paints = []; 546 this.paints = [];
547 /** @type {number|undefined} */ 547 /** @type {number|undefined} */
548 this.mainFrameId = undefined; 548 this.mainFrameId = undefined;
549 this.triggerTime = triggerTime; 549 this.triggerTime = triggerTime;
550 } 550 }
551 }; 551 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698