| OLD | NEW |
| 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 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 210 return result; | 210 return result; |
| 211 } | 211 } |
| 212 return null; | 212 return null; |
| 213 } | 213 } |
| 214 } | 214 } |
| 215 | 215 |
| 216 /** | 216 /** |
| 217 * @constructor | 217 * @constructor |
| 218 * @extends {WebInspector.TimelineFrameModelBase} | 218 * @extends {WebInspector.TimelineFrameModelBase} |
| 219 */ | 219 */ |
| 220 WebInspector.TimelineFrameModel = function() | |
| 221 { | |
| 222 WebInspector.TimelineFrameModelBase.call(this); | |
| 223 } | |
| 224 | |
| 225 WebInspector.TimelineFrameModel._mainFrameMarkers = [ | |
| 226 WebInspector.TimelineModel.RecordType.ScheduleStyleRecalculation, | |
| 227 WebInspector.TimelineModel.RecordType.InvalidateLayout, | |
| 228 WebInspector.TimelineModel.RecordType.BeginFrame, | |
| 229 WebInspector.TimelineModel.RecordType.ScrollLayer | |
| 230 ]; | |
| 231 | |
| 232 WebInspector.TimelineFrameModel.prototype = { | |
| 233 reset: function() | |
| 234 { | |
| 235 this._mergeRecords = true; | |
| 236 this._mergingBuffer = new WebInspector.TimelineMergingRecordBuffer(); | |
| 237 WebInspector.TimelineFrameModelBase.prototype.reset.call(this); | |
| 238 }, | |
| 239 | |
| 240 /** | |
| 241 * @param {boolean} value | |
| 242 */ | |
| 243 setMergeRecords: function(value) | |
| 244 { | |
| 245 this._mergeRecords = value; | |
| 246 }, | |
| 247 | |
| 248 /** | |
| 249 * @param {!Array.<!WebInspector.TimelineModel.Record>} records | |
| 250 */ | |
| 251 addRecords: function(records) | |
| 252 { | |
| 253 if (!records.length) | |
| 254 return; | |
| 255 if (records[0].startTime() < this._minimumRecordTime) | |
| 256 this._minimumRecordTime = records[0].startTime(); | |
| 257 for (var i = 0; i < records.length; ++i) | |
| 258 this.addRecord(records[i]); | |
| 259 }, | |
| 260 | |
| 261 /** | |
| 262 * @param {!WebInspector.TimelineModel.Record} record | |
| 263 */ | |
| 264 addRecord: function(record) | |
| 265 { | |
| 266 var recordTypes = WebInspector.TimelineModel.RecordType; | |
| 267 var programRecord = record.type() === recordTypes.Program ? record : nul
l; | |
| 268 | |
| 269 // Start collecting main frame | |
| 270 if (programRecord) { | |
| 271 if (!this._framePendingCommit && this._findRecordRecursively(WebInsp
ector.TimelineFrameModel._mainFrameMarkers, programRecord)) | |
| 272 this._framePendingCommit = new WebInspector.PendingFrame(); | |
| 273 } | |
| 274 /** type {Array.<!WebInspector.TimelineModel.Record>} */ | |
| 275 var records = []; | |
| 276 if (!this._mergeRecords) | |
| 277 records = [record]; | |
| 278 else | |
| 279 records = this._mergingBuffer.process(record.thread(), /** type {Arr
ay.<!WebInspector.TimelineModel.Record>} */(programRecord ? record.children() ||
[] : [record])); | |
| 280 for (var i = 0; i < records.length; ++i) { | |
| 281 if (records[i].thread() === WebInspector.TimelineModel.MainThreadNam
e) | |
| 282 this._addMainThreadRecord(programRecord, records[i]); | |
| 283 else | |
| 284 this._addBackgroundRecord(records[i]); | |
| 285 } | |
| 286 }, | |
| 287 | |
| 288 /** | |
| 289 * @param {!WebInspector.TimelineModel.Record} record | |
| 290 */ | |
| 291 _addBackgroundRecord: function(record) | |
| 292 { | |
| 293 var recordTypes = WebInspector.TimelineModel.RecordType; | |
| 294 if (record.type() === recordTypes.BeginFrame) | |
| 295 this.handleBeginFrame(record.startTime()); | |
| 296 else if (record.type() === recordTypes.DrawFrame) | |
| 297 this.handleDrawFrame(record.startTime()); | |
| 298 else if (record.type() === recordTypes.RequestMainThreadFrame) | |
| 299 this.handleRequestMainThreadFrame(); | |
| 300 else if (record.type() === recordTypes.ActivateLayerTree) | |
| 301 this.handleActivateLayerTree(); | |
| 302 | |
| 303 if (this._lastFrame) | |
| 304 this._lastFrame._addTimeFromRecord(record); | |
| 305 }, | |
| 306 | |
| 307 /** | |
| 308 * @param {?WebInspector.TimelineModel.Record} programRecord | |
| 309 * @param {!WebInspector.TimelineModel.Record} record | |
| 310 */ | |
| 311 _addMainThreadRecord: function(programRecord, record) | |
| 312 { | |
| 313 var recordTypes = WebInspector.TimelineModel.RecordType; | |
| 314 if (record.type() === recordTypes.UpdateLayerTree && record.data()["laye
rTree"]) | |
| 315 this.handleLayerTreeSnapshot(new WebInspector.DeferredAgentLayerTree
(record.target(), record.data()["layerTree"])); | |
| 316 if (!this._hasThreadedCompositing) { | |
| 317 if (record.type() === recordTypes.BeginFrame) | |
| 318 this._startMainThreadFrame(record.startTime()); | |
| 319 | |
| 320 if (!this._lastFrame) | |
| 321 return; | |
| 322 | |
| 323 this._lastFrame._addTimeFromRecord(record); | |
| 324 | |
| 325 // Account for "other" time at the same time as the first child. | |
| 326 if (programRecord.children()[0] === record) | |
| 327 this._lastFrame._addTimeForCategory("other", this._deriveOtherTi
me(programRecord)); | |
| 328 return; | |
| 329 } | |
| 330 | |
| 331 if (!this._framePendingCommit) | |
| 332 return; | |
| 333 | |
| 334 WebInspector.TimelineUIUtilsImpl.aggregateTimeForRecord(this._framePendi
ngCommit.timeByCategory, record); | |
| 335 if (programRecord.children()[0] === record) | |
| 336 this._framePendingCommit.timeByCategory["other"] = (this._framePendi
ngCommit.timeByCategory["other"] || 0) + this._deriveOtherTime(programRecord); | |
| 337 | |
| 338 if (record.type() === recordTypes.CompositeLayers) | |
| 339 this.handleCompositeLayers(); | |
| 340 }, | |
| 341 | |
| 342 /** | |
| 343 * @param {!WebInspector.TimelineModel.Record} programRecord | |
| 344 * @return {number} | |
| 345 */ | |
| 346 _deriveOtherTime: function(programRecord) | |
| 347 { | |
| 348 var accounted = 0; | |
| 349 for (var i = 0; i < programRecord.children().length; ++i) | |
| 350 accounted += programRecord.children()[i].endTime() - programRecord.c
hildren()[i].startTime(); | |
| 351 return programRecord.endTime() - programRecord.startTime() - accounted; | |
| 352 }, | |
| 353 | |
| 354 __proto__: WebInspector.TimelineFrameModelBase.prototype, | |
| 355 }; | |
| 356 | |
| 357 /** | |
| 358 * @constructor | |
| 359 * @extends {WebInspector.TimelineFrameModelBase} | |
| 360 */ | |
| 361 WebInspector.TracingTimelineFrameModel = function() | 220 WebInspector.TracingTimelineFrameModel = function() |
| 362 { | 221 { |
| 363 WebInspector.TimelineFrameModelBase.call(this); | 222 WebInspector.TimelineFrameModelBase.call(this); |
| 364 } | 223 } |
| 365 | 224 |
| 366 WebInspector.TracingTimelineFrameModel._mainFrameMarkers = [ | 225 WebInspector.TracingTimelineFrameModel._mainFrameMarkers = [ |
| 367 WebInspector.TracingTimelineModel.RecordType.ScheduleStyleRecalculation, | 226 WebInspector.TracingTimelineModel.RecordType.ScheduleStyleRecalculation, |
| 368 WebInspector.TracingTimelineModel.RecordType.InvalidateLayout, | 227 WebInspector.TracingTimelineModel.RecordType.InvalidateLayout, |
| 369 WebInspector.TracingTimelineModel.RecordType.BeginMainThreadFrame, | 228 WebInspector.TracingTimelineModel.RecordType.BeginMainThreadFrame, |
| 370 WebInspector.TracingTimelineModel.RecordType.ScrollLayer | 229 WebInspector.TracingTimelineModel.RecordType.ScrollLayer |
| (...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 583 | 442 |
| 584 /** | 443 /** |
| 585 * @param {?WebInspector.DeferredLayerTree} layerTree | 444 * @param {?WebInspector.DeferredLayerTree} layerTree |
| 586 */ | 445 */ |
| 587 _setLayerTree: function(layerTree) | 446 _setLayerTree: function(layerTree) |
| 588 { | 447 { |
| 589 this.layerTree = layerTree; | 448 this.layerTree = layerTree; |
| 590 }, | 449 }, |
| 591 | 450 |
| 592 /** | 451 /** |
| 593 * @param {!WebInspector.TimelineModel.Record} record | |
| 594 */ | |
| 595 _addTimeFromRecord: function(record) | |
| 596 { | |
| 597 if (!record.endTime()) | |
| 598 return; | |
| 599 var timeByCategory = {}; | |
| 600 WebInspector.TimelineUIUtilsImpl.aggregateTimeForRecord(timeByCategory,
record); | |
| 601 this._addTimeForCategories(timeByCategory); | |
| 602 }, | |
| 603 | |
| 604 /** | |
| 605 * @param {!Object} timeByCategory | 452 * @param {!Object} timeByCategory |
| 606 */ | 453 */ |
| 607 _addTimeForCategories: function(timeByCategory) | 454 _addTimeForCategories: function(timeByCategory) |
| 608 { | 455 { |
| 609 for (var category in timeByCategory) | 456 for (var category in timeByCategory) |
| 610 this._addTimeForCategory(category, timeByCategory[category]); | 457 this._addTimeForCategory(category, timeByCategory[category]); |
| 611 }, | 458 }, |
| 612 | 459 |
| 613 /** | 460 /** |
| 614 * @param {string} category | 461 * @param {string} category |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 672 /** | 519 /** |
| 673 * @constructor | 520 * @constructor |
| 674 */ | 521 */ |
| 675 WebInspector.PendingFrame = function() | 522 WebInspector.PendingFrame = function() |
| 676 { | 523 { |
| 677 /** @type {!Object.<string, number>} */ | 524 /** @type {!Object.<string, number>} */ |
| 678 this.timeByCategory = {}; | 525 this.timeByCategory = {}; |
| 679 /** @type {!Array.<!WebInspector.LayerPaintEvent>} */ | 526 /** @type {!Array.<!WebInspector.LayerPaintEvent>} */ |
| 680 this.paints = []; | 527 this.paints = []; |
| 681 } | 528 } |
| OLD | NEW |