| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2014 Google Inc. All rights reserved. | 2 * Copyright (C) 2014 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 24 matching lines...) Expand all Loading... |
| 35 * @param {!WebInspector.TimelineFrameModel} frameModel | 35 * @param {!WebInspector.TimelineFrameModel} frameModel |
| 36 * @param {boolean} mainThread | 36 * @param {boolean} mainThread |
| 37 */ | 37 */ |
| 38 WebInspector.TimelineFlameChartDataProvider = function(model, frameModel, mainTh
read) | 38 WebInspector.TimelineFlameChartDataProvider = function(model, frameModel, mainTh
read) |
| 39 { | 39 { |
| 40 WebInspector.FlameChartDataProvider.call(this); | 40 WebInspector.FlameChartDataProvider.call(this); |
| 41 this._model = model; | 41 this._model = model; |
| 42 this._frameModel = frameModel; | 42 this._frameModel = frameModel; |
| 43 this._mainThread = mainThread; | 43 this._mainThread = mainThread; |
| 44 this._font = "bold 12px " + WebInspector.fontFamily(); | 44 this._font = "bold 12px " + WebInspector.fontFamily(); |
| 45 | |
| 46 this._colorGenerator = new WebInspector.FlameChart.ColorGenerator(); | |
| 47 var categories = WebInspector.TimelineUIUtils.categories(); | |
| 48 for (var category in categories) { | |
| 49 this._colorGenerator.setColorForID(category, categories[category].fillCo
lorStop1); | |
| 50 this._colorGenerator.setColorForID(category + " child", categories[categ
ory].fillColorStop0); | |
| 51 } | |
| 52 } | 45 } |
| 53 | 46 |
| 54 WebInspector.TimelineFlameChartDataProvider.prototype = { | 47 WebInspector.TimelineFlameChartDataProvider.prototype = { |
| 55 /** | 48 /** |
| 56 * @return {number} | 49 * @return {number} |
| 57 */ | 50 */ |
| 58 barHeight: function() | 51 barHeight: function() |
| 59 { | 52 { |
| 60 return 20; | 53 return 20; |
| 61 }, | 54 }, |
| (...skipping 22 matching lines...) Expand all Loading... |
| 84 { | 77 { |
| 85 return this._font; | 78 return this._font; |
| 86 }, | 79 }, |
| 87 | 80 |
| 88 /** | 81 /** |
| 89 * @param {number} entryIndex | 82 * @param {number} entryIndex |
| 90 * @return {?string} | 83 * @return {?string} |
| 91 */ | 84 */ |
| 92 entryTitle: function(entryIndex) | 85 entryTitle: function(entryIndex) |
| 93 { | 86 { |
| 94 return this._entryTitles[entryIndex]; | 87 return this._isSelfSegment[entryIndex] ? this._records[entryIndex].title
() : null; |
| 95 }, | 88 }, |
| 96 | 89 |
| 97 /** | 90 /** |
| 98 * @param {number} startTime | 91 * @param {number} startTime |
| 99 * @param {number} endTime | 92 * @param {number} endTime |
| 100 * @return {?Array.<number>} | 93 * @return {?Array.<number>} |
| 101 */ | 94 */ |
| 102 dividerOffsets: function(startTime, endTime) | 95 dividerOffsets: function(startTime, endTime) |
| 103 { | 96 { |
| 104 var frames = this._frameModel.filteredFrames(this._model.minimumRecordTi
me() + startTime, this._model.minimumRecordTime() + endTime); | 97 var frames = this._frameModel.filteredFrames(this._model.minimumRecordTi
me() + startTime, this._model.minimumRecordTime() + endTime); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 117 | 110 |
| 118 /** | 111 /** |
| 119 * @param {!WebInspector.TimelineModel.Record} record | 112 * @param {!WebInspector.TimelineModel.Record} record |
| 120 */ | 113 */ |
| 121 addRecord: function(record) | 114 addRecord: function(record) |
| 122 { | 115 { |
| 123 this._appendRecord(record, 0); | 116 this._appendRecord(record, 0); |
| 124 }, | 117 }, |
| 125 | 118 |
| 126 /** | 119 /** |
| 127 * @return {!WebInspector.FlameChart.ColorGenerator} | |
| 128 */ | |
| 129 colorGenerator: function() | |
| 130 { | |
| 131 return this._colorGenerator; | |
| 132 }, | |
| 133 | |
| 134 /** | |
| 135 * @return {!WebInspector.FlameChart.TimelineData} | 120 * @return {!WebInspector.FlameChart.TimelineData} |
| 136 */ | 121 */ |
| 137 timelineData: function() | 122 timelineData: function() |
| 138 { | 123 { |
| 139 if (!this._timelineData) { | 124 if (!this._timelineData) { |
| 140 this._resetData(); | 125 this._resetData(); |
| 141 var records = this._model.records(); | 126 var records = this._model.records(); |
| 142 for (var i = 0; i < records.length; ++i) | 127 for (var i = 0; i < records.length; ++i) |
| 143 this._appendRecord(records[i], 0); | 128 this._appendRecord(records[i], 0); |
| 144 this._zeroTime = this._model.minimumRecordTime(); | 129 this._zeroTime = this._model.minimumRecordTime(); |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 180 | 165 |
| 181 /** | 166 /** |
| 182 * @type {?WebInspector.FlameChart.TimelineData} | 167 * @type {?WebInspector.FlameChart.TimelineData} |
| 183 */ | 168 */ |
| 184 this._timelineData = { | 169 this._timelineData = { |
| 185 entryLevels: [], | 170 entryLevels: [], |
| 186 entryTotalTimes: [], | 171 entryTotalTimes: [], |
| 187 entryOffsets: [], | 172 entryOffsets: [], |
| 188 }; | 173 }; |
| 189 | 174 |
| 190 /** @type {!Array.<string>} */ | 175 this._records = []; |
| 191 this._entryTitles = []; | 176 this._isSelfSegment = []; |
| 192 | |
| 193 /** @type {!Array.<string>} */ | |
| 194 this._entryColors = []; | |
| 195 }, | 177 }, |
| 196 | 178 |
| 197 /** | 179 /** |
| 198 * @param {!WebInspector.TimelineModel.Record} record | 180 * @param {!WebInspector.TimelineModel.Record} record |
| 199 * @param {number} level | 181 * @param {number} level |
| 200 */ | 182 */ |
| 201 _appendRecord: function(record, level) | 183 _appendRecord: function(record, level) |
| 202 { | 184 { |
| 203 var timelineData = this.timelineData(); | 185 var timelineData = this.timelineData(); |
| 204 | 186 |
| 205 this._startTime = this._startTime ? Math.min(this._startTime, record.sta
rtTime) : record.startTime; | 187 this._startTime = this._startTime ? Math.min(this._startTime, record.sta
rtTime) : record.startTime; |
| 206 this._zeroTime = this._startTime; | 188 this._zeroTime = this._startTime; |
| 207 var recordEndTime = record.endTime || record.startTime; | 189 var recordEndTime = record.endTime || record.startTime; |
| 208 this._endTime = Math.max(this._endTime, recordEndTime); | 190 this._endTime = Math.max(this._endTime, recordEndTime); |
| 209 this._totalTime = Math.max(1000, this._endTime - this._startTime); | 191 this._totalTime = Math.max(1000, this._endTime - this._startTime); |
| 210 | 192 |
| 211 if (this._mainThread) { | 193 if (this._mainThread) { |
| 212 if (record.type === WebInspector.TimelineModel.RecordType.GPUTask ||
!!record.thread) | 194 if (record.type === WebInspector.TimelineModel.RecordType.GPUTask ||
!!record.thread) |
| 213 return; | 195 return; |
| 214 } else { | 196 } else { |
| 215 if (record.type === WebInspector.TimelineModel.RecordType.Program ||
!record.thread) | 197 if (record.type === WebInspector.TimelineModel.RecordType.Program ||
!record.thread) |
| 216 return; | 198 return; |
| 217 } | 199 } |
| 218 | 200 |
| 219 var color = this._colorGenerator.colorForID(WebInspector.TimelineUIUtils
.categoryForRecord(record).name); | |
| 220 var colorChild = this._colorGenerator.colorForID(WebInspector.TimelineUI
Utils.categoryForRecord(record).name + " child"); | |
| 221 | |
| 222 var currentTime = record.startTime; | 201 var currentTime = record.startTime; |
| 223 for (var i = 0; i < record.children.length; ++i) { | 202 for (var i = 0; i < record.children.length; ++i) { |
| 224 var childRecord = record.children[i]; | 203 var childRecord = record.children[i]; |
| 225 var childStartTime = childRecord.startTime; | 204 var childStartTime = childRecord.startTime; |
| 226 if (currentTime !== childStartTime) | 205 if (currentTime !== childStartTime) |
| 227 this._pushRecord(record, level, color, currentTime, childStartTi
me); | 206 this._pushRecord(record, true, level, currentTime, childStartTim
e); |
| 228 var childEndTime = childRecord.endTime || childRecord.startTime; | 207 var childEndTime = childRecord.endTime || childRecord.startTime; |
| 229 this._pushRecord(record, level, colorChild, childStartTime, childEnd
Time); | 208 this._pushRecord(record, false, level, childStartTime, childEndTime)
; |
| 230 this._appendRecord(childRecord, level + 1); | 209 this._appendRecord(childRecord, level + 1); |
| 231 currentTime = childEndTime; | 210 currentTime = childEndTime; |
| 232 } | 211 } |
| 233 if (recordEndTime !== currentTime || record.children.length === 0) | 212 if (recordEndTime !== currentTime || record.children.length === 0) |
| 234 this._pushRecord(record, level, color, currentTime, recordEndTime); | 213 this._pushRecord(record, true, level, currentTime, recordEndTime); |
| 235 | 214 |
| 236 this._maxStackDepth = Math.max(this._maxStackDepth, level + 2); | 215 this._maxStackDepth = Math.max(this._maxStackDepth, level + 2); |
| 237 }, | 216 }, |
| 238 | 217 |
| 239 /** | 218 /** |
| 240 * @param {!WebInspector.TimelineModel.Record} record | 219 * @param {!WebInspector.TimelineModel.Record} record |
| 220 * @param {boolean} isSelfSegment |
| 241 * @param {number} level | 221 * @param {number} level |
| 242 * @param {string} color | |
| 243 * @param {number} startTime | 222 * @param {number} startTime |
| 244 * @param {number} endTime | 223 * @param {number} endTime |
| 245 */ | 224 */ |
| 246 _pushRecord: function(record, level, color, startTime, endTime) | 225 _pushRecord: function(record, isSelfSegment, level, startTime, endTime) |
| 247 { | 226 { |
| 248 var index = this._entryTitles.length; | 227 var index = this._records.length; |
| 249 this._entryTitles[index] = record.type; | 228 this._records.push(record); |
| 250 this._timelineData.entryOffsets[index] = startTime - this._zeroTime; | 229 this._timelineData.entryOffsets[index] = startTime - this._zeroTime; |
| 251 this._timelineData.entryLevels[index] = level; | 230 this._timelineData.entryLevels[index] = level; |
| 252 this._timelineData.entryTotalTimes[index] = endTime - startTime; | 231 this._timelineData.entryTotalTimes[index] = endTime - startTime; |
| 253 this._entryColors[index] = color; | 232 this._isSelfSegment[index] = isSelfSegment; |
| 254 }, | 233 }, |
| 255 | 234 |
| 256 /** | 235 /** |
| 257 * @param {number} entryIndex | 236 * @param {number} entryIndex |
| 258 * @return {?Array.<!{title: string, text: string}>} | 237 * @return {?Array.<!{title: string, text: string}>} |
| 259 */ | 238 */ |
| 260 prepareHighlightedEntryInfo: function(entryIndex) | 239 prepareHighlightedEntryInfo: function(entryIndex) |
| 261 { | 240 { |
| 262 return null; | 241 return null; |
| 263 }, | 242 }, |
| (...skipping 15 matching lines...) Expand all Loading... |
| 279 { | 258 { |
| 280 return null; | 259 return null; |
| 281 }, | 260 }, |
| 282 | 261 |
| 283 /** | 262 /** |
| 284 * @param {number} entryIndex | 263 * @param {number} entryIndex |
| 285 * @return {!string} | 264 * @return {!string} |
| 286 */ | 265 */ |
| 287 entryColor: function(entryIndex) | 266 entryColor: function(entryIndex) |
| 288 { | 267 { |
| 289 return this._entryColors[entryIndex]; | 268 var category = WebInspector.TimelineUIUtils.categoryForRecord(this._reco
rds[entryIndex]); |
| 269 return this._isSelfSegment[entryIndex] ? category.fillColorStop1 : categ
ory.backgroundColor; |
| 290 }, | 270 }, |
| 291 | 271 |
| 292 /** | 272 /** |
| 293 * @param {number} entryIndex | 273 * @param {number} entryIndex |
| 294 * @return {!string} | 274 * @return {!string} |
| 295 */ | 275 */ |
| 296 textColor: function(entryIndex) | 276 textColor: function(entryIndex) |
| 297 { | 277 { |
| 298 return "white"; | 278 return "white"; |
| 299 } | 279 } |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 406 | 386 |
| 407 /** | 387 /** |
| 408 * @param {?WebInspector.TimelineModel.Record} record | 388 * @param {?WebInspector.TimelineModel.Record} record |
| 409 */ | 389 */ |
| 410 setSelectedRecord: function(record) | 390 setSelectedRecord: function(record) |
| 411 { | 391 { |
| 412 }, | 392 }, |
| 413 | 393 |
| 414 __proto__: WebInspector.View.prototype | 394 __proto__: WebInspector.View.prototype |
| 415 } | 395 } |
| OLD | NEW |