| Index: Source/devtools/front_end/TimelineFlameChart.js
|
| diff --git a/Source/devtools/front_end/TimelineFlameChart.js b/Source/devtools/front_end/TimelineFlameChart.js
|
| index da9dc56e6031016203f03db1bdf42c2e3131faaa..2287221c39bdd2d3433c5018877aefc9b61f50af 100644
|
| --- a/Source/devtools/front_end/TimelineFlameChart.js
|
| +++ b/Source/devtools/front_end/TimelineFlameChart.js
|
| @@ -45,8 +45,10 @@ WebInspector.TimelineFlameChartDataProvider = function(model, frameModel, mainTh
|
|
|
| this._colorGenerator = new WebInspector.FlameChart.ColorGenerator();
|
| var categories = WebInspector.TimelineUIUtils.categories();
|
| - for (var category in categories)
|
| + for (var category in categories) {
|
| this._colorGenerator.setColorForID(category, categories[category].fillColorStop1);
|
| + this._colorGenerator.setColorForID(category + " child", categories[category].fillColorStop0);
|
| + }
|
| }
|
|
|
| WebInspector.TimelineFlameChartDataProvider.prototype = {
|
| @@ -102,7 +104,7 @@ WebInspector.TimelineFlameChartDataProvider.prototype = {
|
| */
|
| addRecord: function(record)
|
| {
|
| - WebInspector.TimelineModel.forAllRecords([record], this._appendRecord.bind(this));
|
| + this._appendRecord(record, 0);
|
| },
|
|
|
| /**
|
| @@ -120,7 +122,9 @@ WebInspector.TimelineFlameChartDataProvider.prototype = {
|
| {
|
| if (!this._timelineData) {
|
| this._resetData();
|
| - this._model.forAllRecords(this._appendRecord.bind(this));
|
| + var records = this._model.records();
|
| + for (var i = 0; i < records.length; ++i)
|
| + this._appendRecord(records[i], 0);
|
| this._zeroTime = this._model.minimumRecordTime();
|
| }
|
| return /** @type {!WebInspector.FlameChart.TimelineData} */(this._timelineData);
|
| @@ -176,17 +180,16 @@ WebInspector.TimelineFlameChartDataProvider.prototype = {
|
|
|
| /**
|
| * @param {!WebInspector.TimelineModel.Record} record
|
| - * @param {number} depth
|
| + * @param {number} level
|
| */
|
| - _appendRecord: function(record, depth)
|
| + _appendRecord: function(record, level)
|
| {
|
| var timelineData = this.timelineData();
|
|
|
| this._startTime = this._startTime ? Math.min(this._startTime, record.startTime) : record.startTime;
|
| - var startTime = this._startTime;
|
| - this._zeroTime = startTime;
|
| - var endTime = record.endTime || record.startTime - startTime;
|
| - this._endTime = Math.max(this._endTime, endTime);
|
| + this._zeroTime = this._startTime;
|
| + var recordEndTime = record.endTime || record.startTime;
|
| + this._endTime = Math.max(this._endTime, recordEndTime);
|
| this._totalTime = Math.max(1000, this._endTime - this._startTime);
|
|
|
| if (this._mainThread) {
|
| @@ -197,13 +200,41 @@ WebInspector.TimelineFlameChartDataProvider.prototype = {
|
| return;
|
| }
|
|
|
| + var color = this._colorGenerator.colorForID(WebInspector.TimelineUIUtils.categoryForRecord(record).name);
|
| + var colorChild = this._colorGenerator.colorForID(WebInspector.TimelineUIUtils.categoryForRecord(record).name + " child");
|
| +
|
| + var currentTime = record.startTime;
|
| + for (var i = 0; i < record.children.length; ++i) {
|
| + var childRecord = record.children[i];
|
| + var childStartTime = childRecord.startTime;
|
| + if (currentTime !== childStartTime)
|
| + this._pushRecord(record, level, color, currentTime, childStartTime);
|
| + var childEndTime = childRecord.endTime || childRecord.startTime;
|
| + this._pushRecord(record, level, colorChild, childStartTime, childEndTime);
|
| + this._appendRecord(childRecord, level + 1);
|
| + currentTime = childEndTime;
|
| + }
|
| + if (recordEndTime !== currentTime || record.children.length === 0)
|
| + this._pushRecord(record, level, color, currentTime, recordEndTime);
|
| +
|
| + this._maxStackDepth = Math.max(this._maxStackDepth, level + 2);
|
| + },
|
| +
|
| + /**
|
| + * @param {!WebInspector.TimelineModel.Record} record
|
| + * @param {number} level
|
| + * @param {string} color
|
| + * @param {number} startTime
|
| + * @param {number} endTime
|
| + */
|
| + _pushRecord: function(record, level, color, startTime, endTime)
|
| + {
|
| var index = this._entryTitles.length;
|
| this._entryTitles[index] = record.type;
|
| - timelineData.entryOffsets[index] = record.startTime - startTime;
|
| - timelineData.entryLevels[index] = depth;
|
| - timelineData.entryTotalTimes[index] = endTime - record.startTime;
|
| - this._entryColors[index] = this._colorGenerator.colorForID(WebInspector.TimelineUIUtils.categoryForRecord(record).name);
|
| - this._maxStackDepth = Math.max(this._maxStackDepth, depth + 1);
|
| + this._timelineData.entryOffsets[index] = startTime - this._zeroTime;
|
| + this._timelineData.entryLevels[index] = level;
|
| + this._timelineData.entryTotalTimes[index] = endTime - startTime;
|
| + this._entryColors[index] = color;
|
| },
|
|
|
| /**
|
|
|