| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
| 3 * Copyright (C) 2012 Intel Inc. All rights reserved. | 3 * Copyright (C) 2012 Intel Inc. All rights reserved. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions are | 6 * modification, are permitted provided that the following conditions are |
| 7 * met: | 7 * met: |
| 8 * | 8 * |
| 9 * * Redistributions of source code must retain the above copyright | 9 * * Redistributions of source code must retain the above copyright |
| 10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
| (...skipping 15 matching lines...) Expand all Loading... |
| 26 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 26 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| 27 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 27 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| 29 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 29 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 30 */ | 30 */ |
| 31 | 31 |
| 32 /** | 32 /** |
| 33 * @constructor | 33 * @constructor |
| 34 * @extends {WebInspector.Object} | 34 * @extends {WebInspector.Object} |
| 35 * @param {!WebInspector.TimelineModel} model | 35 * @param {!WebInspector.TimelineModel} model |
| 36 * @param {!WebInspector.TimelineModeViewDelegate} delegate |
| 36 */ | 37 */ |
| 37 WebInspector.TimelinePresentationModel = function(model) | 38 WebInspector.TimelinePresentationModel = function(model, delegate) |
| 38 { | 39 { |
| 39 this._model = model; | 40 this._model = model; |
| 41 this._delegate = delegate; |
| 40 this._filters = []; | 42 this._filters = []; |
| 41 /** | 43 /** |
| 42 * @type {!Map.<!WebInspector.TimelineModel.Record, !WebInspector.TimelinePr
esentationModel.Record>} | 44 * @type {!Map.<!WebInspector.TimelineModel.Record, !WebInspector.TimelinePr
esentationModel.Record>} |
| 43 */ | 45 */ |
| 44 this._recordToPresentationRecord = new Map(); | 46 this._recordToPresentationRecord = new Map(); |
| 45 this.reset(); | 47 this.reset(); |
| 46 } | 48 } |
| 47 | 49 |
| 48 WebInspector.TimelinePresentationModel._hiddenRecords = { }; | |
| 49 WebInspector.TimelinePresentationModel._hiddenRecords[WebInspector.TimelineModel
.RecordType.MarkDOMContent] = 1; | |
| 50 WebInspector.TimelinePresentationModel._hiddenRecords[WebInspector.TimelineModel
.RecordType.MarkLoad] = 1; | |
| 51 WebInspector.TimelinePresentationModel._hiddenRecords[WebInspector.TimelineModel
.RecordType.MarkFirstPaint] = 1; | |
| 52 WebInspector.TimelinePresentationModel._hiddenRecords[WebInspector.TimelineModel
.RecordType.GPUTask] = 1; | |
| 53 WebInspector.TimelinePresentationModel._hiddenRecords[WebInspector.TimelineModel
.RecordType.ScheduleStyleRecalculation] = 1; | |
| 54 WebInspector.TimelinePresentationModel._hiddenRecords[WebInspector.TimelineModel
.RecordType.InvalidateLayout] = 1; | |
| 55 WebInspector.TimelinePresentationModel._hiddenRecords[WebInspector.TimelineModel
.RecordType.RequestMainThreadFrame] = 1; | |
| 56 WebInspector.TimelinePresentationModel._hiddenRecords[WebInspector.TimelineModel
.RecordType.ActivateLayerTree] = 1; | |
| 57 WebInspector.TimelinePresentationModel._hiddenRecords[WebInspector.TimelineModel
.RecordType.DrawFrame] = 1; | |
| 58 WebInspector.TimelinePresentationModel._hiddenRecords[WebInspector.TimelineModel
.RecordType.BeginFrame] = 1; | |
| 59 | |
| 60 WebInspector.TimelinePresentationModel._coalescingRecords = { }; | 50 WebInspector.TimelinePresentationModel._coalescingRecords = { }; |
| 61 WebInspector.TimelinePresentationModel._coalescingRecords[WebInspector.TimelineM
odel.RecordType.Layout] = 1; | 51 WebInspector.TimelinePresentationModel._coalescingRecords[WebInspector.TimelineM
odel.RecordType.Layout] = 1; |
| 62 WebInspector.TimelinePresentationModel._coalescingRecords[WebInspector.TimelineM
odel.RecordType.Paint] = 1; | 52 WebInspector.TimelinePresentationModel._coalescingRecords[WebInspector.TimelineM
odel.RecordType.Paint] = 1; |
| 63 WebInspector.TimelinePresentationModel._coalescingRecords[WebInspector.TimelineM
odel.RecordType.Rasterize] = 1; | 53 WebInspector.TimelinePresentationModel._coalescingRecords[WebInspector.TimelineM
odel.RecordType.Rasterize] = 1; |
| 64 WebInspector.TimelinePresentationModel._coalescingRecords[WebInspector.TimelineM
odel.RecordType.DecodeImage] = 1; | 54 WebInspector.TimelinePresentationModel._coalescingRecords[WebInspector.TimelineM
odel.RecordType.DecodeImage] = 1; |
| 65 WebInspector.TimelinePresentationModel._coalescingRecords[WebInspector.TimelineM
odel.RecordType.ResizeImage] = 1; | 55 WebInspector.TimelinePresentationModel._coalescingRecords[WebInspector.TimelineM
odel.RecordType.ResizeImage] = 1; |
| 66 | 56 |
| 67 WebInspector.TimelinePresentationModel.prototype = { | 57 WebInspector.TimelinePresentationModel.prototype = { |
| 68 /** | 58 /** |
| 69 * @param {?WebInspector.TimelineModel.Record} record | 59 * @param {?WebInspector.TimelineModel.Record} record |
| 70 * @return {?WebInspector.TimelinePresentationModel.Record} | 60 * @return {?WebInspector.TimelinePresentationModel.Record} |
| 71 */ | 61 */ |
| 72 toPresentationRecord: function(record) | 62 toPresentationRecord: function(record) |
| 73 { | 63 { |
| 74 return record ? this._recordToPresentationRecord.get(record) || null : n
ull; | 64 return record ? this._recordToPresentationRecord.get(record) || null : n
ull; |
| 75 }, | 65 }, |
| 76 | 66 |
| 77 /** | 67 /** |
| 78 * @param {!WebInspector.TimelinePresentationModel.Filter} filter | |
| 79 */ | |
| 80 addFilter: function(filter) | |
| 81 { | |
| 82 this._filters.push(filter); | |
| 83 }, | |
| 84 | |
| 85 /** | |
| 86 * @param {?WebInspector.TimelinePresentationModel.Filter} filter | |
| 87 */ | |
| 88 setSearchFilter: function(filter) | |
| 89 { | |
| 90 if (!filter) { | |
| 91 var allRecords = this._recordToPresentationRecord.values(); | |
| 92 for (var i = 0; i < allRecords.length; ++i) | |
| 93 delete allRecords[i].clicked; | |
| 94 } | |
| 95 this._searchFilter = filter; | |
| 96 }, | |
| 97 | |
| 98 /** | |
| 99 * @return {!WebInspector.TimelinePresentationModel.Record} | 68 * @return {!WebInspector.TimelinePresentationModel.Record} |
| 100 */ | 69 */ |
| 101 rootRecord: function() | 70 rootRecord: function() |
| 102 { | 71 { |
| 103 return this._rootRecord; | 72 return this._rootRecord; |
| 104 }, | 73 }, |
| 105 | 74 |
| 106 reset: function() | 75 reset: function() |
| 107 { | 76 { |
| 108 this._recordToPresentationRecord.clear(); | 77 this._recordToPresentationRecord.clear(); |
| 109 var rootPayload = { type: WebInspector.TimelineModel.RecordType.Root }; | 78 var rootPayload = { type: WebInspector.TimelineModel.RecordType.Root }; |
| 110 var rootRecord = new WebInspector.TimelineModel.Record(this._model, /**
@type {!TimelineAgent.TimelineEvent} */ (rootPayload), null); | 79 var rootRecord = new WebInspector.TimelineModel.Record(this._model, /**
@type {!TimelineAgent.TimelineEvent} */ (rootPayload), null); |
| 111 this._rootRecord = new WebInspector.TimelinePresentationModel.Record(roo
tRecord, null); | 80 this._rootRecord = new WebInspector.TimelinePresentationModel.Record(roo
tRecord, null); |
| 112 this._eventDividerRecords = []; | |
| 113 this._minimumRecordTime = -1; | |
| 114 /** @type {!Object.<string, !WebInspector.TimelinePresentationModel.Reco
rd>} */ | 81 /** @type {!Object.<string, !WebInspector.TimelinePresentationModel.Reco
rd>} */ |
| 115 this._coalescingBuckets = {}; | 82 this._coalescingBuckets = {}; |
| 116 this._mergingBuffer = new WebInspector.TimelineMergingRecordBuffer(); | |
| 117 | |
| 118 /** @type {!Array.<!WebInspector.TimelineModel.Record>} */ | |
| 119 this._mainThreadTasks = ([]); | |
| 120 /** @type {!Array.<!WebInspector.TimelineModel.Record>} */ | |
| 121 this._gpuThreadTasks = ([]); | |
| 122 }, | 83 }, |
| 123 | 84 |
| 124 /** | 85 /** |
| 125 * @return {number} | |
| 126 */ | |
| 127 minimumRecordTime: function() | |
| 128 { | |
| 129 return this._minimumRecordTime; | |
| 130 }, | |
| 131 | |
| 132 /** | |
| 133 * @return {number} | |
| 134 */ | |
| 135 maximumRecordTime: function() | |
| 136 { | |
| 137 return this._maximumRecordTime; | |
| 138 }, | |
| 139 | |
| 140 /** | |
| 141 * @return {!Array.<!WebInspector.TimelineModel.Record>} | |
| 142 */ | |
| 143 mainThreadTasks: function() | |
| 144 { | |
| 145 return this._mainThreadTasks; | |
| 146 }, | |
| 147 | |
| 148 /** | |
| 149 * @return {!Array.<!WebInspector.TimelineModel.Record>} | |
| 150 */ | |
| 151 gpuThreadTasks: function() | |
| 152 { | |
| 153 return this._gpuThreadTasks; | |
| 154 }, | |
| 155 | |
| 156 /** | |
| 157 * @param {!WebInspector.TimelineModel.Record} record | 86 * @param {!WebInspector.TimelineModel.Record} record |
| 158 */ | 87 */ |
| 159 addRecord: function(record) | 88 addRecord: function(record) |
| 160 { | 89 { |
| 161 if (record.type === WebInspector.TimelineModel.RecordType.Program) | |
| 162 this._mainThreadTasks.push(record); | |
| 163 if (record.type === WebInspector.TimelineModel.RecordType.GPUTask) | |
| 164 this._gpuThreadTasks.push(record); | |
| 165 | |
| 166 var startTime = record.startTime; | |
| 167 var endTime = record.endTime; | |
| 168 if (this._minimumRecordTime === -1 || startTime < this._minimumRecordTim
e) | |
| 169 this._minimumRecordTime = startTime; | |
| 170 if (this._maximumRecordTime === -1 || endTime > this._maximumRecordTime) | |
| 171 this._maximumRecordTime = endTime; | |
| 172 | |
| 173 var records; | 90 var records; |
| 174 if (record.type === WebInspector.TimelineModel.RecordType.Program) | 91 if (record.type === WebInspector.TimelineModel.RecordType.Program) |
| 175 records = record.children; | 92 records = record.children; |
| 176 else | 93 else |
| 177 records = [record]; | 94 records = [record]; |
| 178 | 95 |
| 179 for (var i = 0; i < records.length; ++i) | 96 for (var i = 0; i < records.length; ++i) |
| 180 this._innerAddRecord(this._rootRecord, records[i]); | 97 this._innerAddRecord(this._rootRecord, records[i]); |
| 181 }, | 98 }, |
| 182 | 99 |
| 183 /** | 100 /** |
| 184 * @param {!WebInspector.TimelinePresentationModel.Record} parentRecord | 101 * @param {!WebInspector.TimelinePresentationModel.Record} parentRecord |
| 185 * @param {!WebInspector.TimelineModel.Record} record | 102 * @param {!WebInspector.TimelineModel.Record} record |
| 186 */ | 103 */ |
| 187 _innerAddRecord: function(parentRecord, record) | 104 _innerAddRecord: function(parentRecord, record) |
| 188 { | 105 { |
| 189 if (WebInspector.TimelineUIUtils.isEventDivider(record)) | |
| 190 this._eventDividerRecords.push(record); | |
| 191 | |
| 192 if (record.type in WebInspector.TimelinePresentationModel._hiddenRecords
) | |
| 193 return null; | |
| 194 | |
| 195 const recordTypes = WebInspector.TimelineModel.RecordType; | |
| 196 | |
| 197 var origin = parentRecord; | |
| 198 var coalescingBucket; | 106 var coalescingBucket; |
| 199 | 107 |
| 200 // On main thread, only coalesce if the last event is of same type. | 108 // On main thread, only coalesce if the last event is of same type. |
| 201 if (parentRecord === this._rootRecord) | 109 if (parentRecord === this._rootRecord) |
| 202 coalescingBucket = record.thread ? record.type : "mainThread"; | 110 coalescingBucket = record.thread ? record.type : "mainThread"; |
| 203 var coalescedRecord = this._findCoalescedParent(record, parentRecord, co
alescingBucket); | 111 var coalescedRecord = this._findCoalescedParent(record, parentRecord, co
alescingBucket); |
| 204 if (coalescedRecord) | 112 if (coalescedRecord) |
| 205 parentRecord = coalescedRecord; | 113 parentRecord = coalescedRecord; |
| 206 | 114 |
| 207 var formattedRecord = new WebInspector.TimelinePresentationModel.Record(
record, parentRecord); | 115 var formattedRecord = new WebInspector.TimelinePresentationModel.Record(
record, parentRecord); |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 293 var parentRecord = presentationRecord._presentationParent.record(); | 201 var parentRecord = presentationRecord._presentationParent.record(); |
| 294 WebInspector.TimelineUIUtils.aggregateTimeByCategory(parentRecord.aggreg
atedStats, record.aggregatedStats); | 202 WebInspector.TimelineUIUtils.aggregateTimeByCategory(parentRecord.aggreg
atedStats, record.aggregatedStats); |
| 295 if (parentRecord.startTime > record.startTime) | 203 if (parentRecord.startTime > record.startTime) |
| 296 parentRecord.startTime = record.startTime; | 204 parentRecord.startTime = record.startTime; |
| 297 if (parentRecord.endTime < record.endTime) { | 205 if (parentRecord.endTime < record.endTime) { |
| 298 parentRecord.endTime = record.endTime; | 206 parentRecord.endTime = record.endTime; |
| 299 parentRecord.lastChildEndTime = parentRecord.endTime; | 207 parentRecord.lastChildEndTime = parentRecord.endTime; |
| 300 } | 208 } |
| 301 }, | 209 }, |
| 302 | 210 |
| 211 /** |
| 212 * @param {?RegExp} textFilter |
| 213 */ |
| 214 setTextFilter: function(textFilter) |
| 215 { |
| 216 if (this._textFilter === textFilter) |
| 217 return; |
| 218 this._textFilter = textFilter; |
| 219 for (var i = 0; this._filteredRecords && i < this._filteredRecords.lengt
h; ++i) |
| 220 delete this._filteredRecords[i]._expandedOrCollapsedWhileFiltered; |
| 221 }, |
| 222 |
| 303 invalidateFilteredRecords: function() | 223 invalidateFilteredRecords: function() |
| 304 { | 224 { |
| 305 delete this._filteredRecords; | 225 delete this._filteredRecords; |
| 306 }, | 226 }, |
| 307 | 227 |
| 308 /** | 228 /** |
| 309 * @return {!Array.<!WebInspector.TimelinePresentationModel.Record>} | 229 * @return {!Array.<!WebInspector.TimelinePresentationModel.Record>} |
| 310 */ | 230 */ |
| 311 filteredRecords: function() | 231 filteredRecords: function() |
| 312 { | 232 { |
| 313 if (this._filteredRecords) | 233 if (this._filteredRecords) |
| 314 return this._filteredRecords; | 234 return this._filteredRecords; |
| 315 | 235 |
| 316 var recordsInWindow = []; | 236 var recordsInWindow = []; |
| 317 var stack = [{children: this._rootRecord._presentationChildren, index: 0
, parentIsCollapsed: false, parentRecord: {}}]; | 237 |
| 318 var revealedDepth = 0; | 238 var stack = [{children: this._rootRecord._presentationChildren, index:
0, parentIsCollapsed: false, parentRecord: {}}]; |
| 239 var revealedDepth = 0; |
| 319 | 240 |
| 320 function revealRecordsInStack() { | 241 function revealRecordsInStack() { |
| 321 for (var depth = revealedDepth + 1; depth < stack.length; ++depth) { | 242 for (var depth = revealedDepth + 1; depth < stack.length; ++depth) { |
| 322 if (stack[depth - 1].parentIsCollapsed) { | 243 if (stack[depth - 1].parentIsCollapsed) { |
| 323 stack[depth].parentRecord._presentationParent._expandable =
true; | 244 stack[depth].parentRecord._presentationParent._expandable =
true; |
| 324 return; | 245 return; |
| 325 } | 246 } |
| 326 stack[depth - 1].parentRecord._collapsed = false; | 247 stack[depth - 1].parentRecord._collapsed = false; |
| 327 recordsInWindow.push(stack[depth].parentRecord); | 248 recordsInWindow.push(stack[depth].parentRecord); |
| 328 stack[depth].windowLengthBeforeChildrenTraversal = recordsInWind
ow.length; | 249 stack[depth].windowLengthBeforeChildrenTraversal = recordsInWind
ow.length; |
| 329 stack[depth].parentIsRevealed = true; | 250 stack[depth].parentIsRevealed = true; |
| 330 revealedDepth = depth; | 251 revealedDepth = depth; |
| 331 } | 252 } |
| 332 } | 253 } |
| 333 | 254 |
| 334 while (stack.length) { | 255 while (stack.length) { |
| 335 var entry = stack[stack.length - 1]; | 256 var entry = stack[stack.length - 1]; |
| 336 var records = entry.children; | 257 var records = entry.children; |
| 337 if (records && entry.index < records.length) { | 258 if (records && entry.index < records.length) { |
| 338 var record = records[entry.index]; | 259 var record = records[entry.index]; |
| 339 ++entry.index; | 260 ++entry.index; |
| 340 | 261 |
| 341 if (this.isVisible(record.record())) { | 262 if (this._model.isVisible(record.record())) { |
| 342 record._presentationParent._expandable = true; | 263 record._presentationParent._expandable = true; |
| 343 if (this._searchFilter) | 264 if (this._textFilter) |
| 344 revealRecordsInStack(); | 265 revealRecordsInStack(); |
| 345 if (!entry.parentIsCollapsed) { | 266 if (!entry.parentIsCollapsed) { |
| 346 recordsInWindow.push(record); | 267 recordsInWindow.push(record); |
| 347 revealedDepth = stack.length; | 268 revealedDepth = stack.length; |
| 348 entry.parentRecord._collapsed = false; | 269 entry.parentRecord._collapsed = false; |
| 349 } | 270 } |
| 350 } | 271 } |
| 351 | 272 |
| 352 record._expandable = false; | 273 record._expandable = false; |
| 353 | 274 |
| 354 stack.push({children: record._presentationChildren, | 275 stack.push({children: record._presentationChildren, |
| 355 index: 0, | 276 index: 0, |
| 356 parentIsCollapsed: (entry.parentIsCollapsed || (reco
rd._collapsed && (!this._searchFilter || record.clicked))), | 277 parentIsCollapsed: entry.parentIsCollapsed || (recor
d._collapsed && (!this._textFilter || record._expandedOrCollapsedWhileFiltered))
, |
| 357 parentRecord: record, | 278 parentRecord: record, |
| 358 windowLengthBeforeChildrenTraversal: recordsInWindow
.length}); | 279 windowLengthBeforeChildrenTraversal: recordsInWindow
.length}); |
| 359 } else { | 280 } else { |
| 360 stack.pop(); | 281 stack.pop(); |
| 361 revealedDepth = Math.min(revealedDepth, stack.length - 1); | 282 revealedDepth = Math.min(revealedDepth, stack.length - 1); |
| 362 entry.parentRecord._visibleChildrenCount = recordsInWindow.lengt
h - entry.windowLengthBeforeChildrenTraversal; | 283 entry.parentRecord._visibleChildrenCount = recordsInWindow.lengt
h - entry.windowLengthBeforeChildrenTraversal; |
| 363 } | 284 } |
| 364 } | 285 } |
| 365 | 286 |
| 366 this._filteredRecords = recordsInWindow; | 287 this._filteredRecords = recordsInWindow; |
| 367 return recordsInWindow; | 288 return recordsInWindow; |
| 368 }, | 289 }, |
| 369 | 290 |
| 370 /** | |
| 371 * @return {!Array.<!WebInspector.TimelineModel.Record>} | |
| 372 */ | |
| 373 eventDividerRecords: function() | |
| 374 { | |
| 375 return this._eventDividerRecords; | |
| 376 }, | |
| 377 | |
| 378 /** | |
| 379 * @param {!WebInspector.TimelineModel.Record} record | |
| 380 * @return {boolean} | |
| 381 */ | |
| 382 isVisible: function(record) | |
| 383 { | |
| 384 for (var i = 0; i < this._filters.length; ++i) { | |
| 385 if (!this._filters[i].accept(record)) | |
| 386 return false; | |
| 387 } | |
| 388 return !this._searchFilter || this._searchFilter.accept(record); | |
| 389 }, | |
| 390 | |
| 391 __proto__: WebInspector.Object.prototype | 291 __proto__: WebInspector.Object.prototype |
| 392 } | 292 } |
| 393 | 293 |
| 394 /** | 294 /** |
| 395 * @constructor | 295 * @constructor |
| 396 * @param {!WebInspector.TimelineModel.Record} record | 296 * @param {!WebInspector.TimelineModel.Record} record |
| 397 * @param {?WebInspector.TimelinePresentationModel.Record} parentRecord | 297 * @param {?WebInspector.TimelinePresentationModel.Record} parentRecord |
| 398 */ | 298 */ |
| 399 WebInspector.TimelinePresentationModel.Record = function(record, parentRecord) | 299 WebInspector.TimelinePresentationModel.Record = function(record, parentRecord) |
| 400 { | 300 { |
| (...skipping 20 matching lines...) Expand all Loading... |
| 421 WebInspector.TimelinePresentationModel.Record.prototype = { | 321 WebInspector.TimelinePresentationModel.Record.prototype = { |
| 422 /** | 322 /** |
| 423 * @return {!WebInspector.TimelineModel.Record} | 323 * @return {!WebInspector.TimelineModel.Record} |
| 424 */ | 324 */ |
| 425 record: function() | 325 record: function() |
| 426 { | 326 { |
| 427 return this._record; | 327 return this._record; |
| 428 }, | 328 }, |
| 429 | 329 |
| 430 /** | 330 /** |
| 431 * @return {boolean} | |
| 432 */ | |
| 433 isRoot: function() | |
| 434 { | |
| 435 return this.type === WebInspector.TimelineModel.RecordType.Root; | |
| 436 }, | |
| 437 | |
| 438 /** | |
| 439 * @return {!Array.<!WebInspector.TimelinePresentationModel.Record>} | 331 * @return {!Array.<!WebInspector.TimelinePresentationModel.Record>} |
| 440 */ | 332 */ |
| 441 presentationChildren: function() | 333 presentationChildren: function() |
| 442 { | 334 { |
| 443 return this._presentationChildren; | 335 return this._presentationChildren; |
| 444 }, | 336 }, |
| 445 | 337 |
| 446 /** | 338 /** |
| 447 * @return {boolean} | 339 * @return {boolean} |
| 448 */ | 340 */ |
| (...skipping 17 matching lines...) Expand all Loading... |
| 466 { | 358 { |
| 467 return this._collapsed; | 359 return this._collapsed; |
| 468 }, | 360 }, |
| 469 | 361 |
| 470 /** | 362 /** |
| 471 * @param {boolean} collapsed | 363 * @param {boolean} collapsed |
| 472 */ | 364 */ |
| 473 setCollapsed: function(collapsed) | 365 setCollapsed: function(collapsed) |
| 474 { | 366 { |
| 475 this._collapsed = collapsed; | 367 this._collapsed = collapsed; |
| 368 this._expandedOrCollapsedWhileFiltered = true; |
| 476 }, | 369 }, |
| 477 | 370 |
| 478 /** | 371 /** |
| 479 * @return {?WebInspector.TimelinePresentationModel.Record} | 372 * @return {?WebInspector.TimelinePresentationModel.Record} |
| 480 */ | 373 */ |
| 481 presentationParent: function() | 374 presentationParent: function() |
| 482 { | 375 { |
| 483 return this._presentationParent || null; | 376 return this._presentationParent || null; |
| 484 }, | 377 }, |
| 485 | 378 |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 540 }, | 433 }, |
| 541 | 434 |
| 542 /** | 435 /** |
| 543 * @param {!WebInspector.TimelineRecordGraphRow} graphRow | 436 * @param {!WebInspector.TimelineRecordGraphRow} graphRow |
| 544 */ | 437 */ |
| 545 setGraphRow: function(graphRow) | 438 setGraphRow: function(graphRow) |
| 546 { | 439 { |
| 547 this._graphRow = graphRow; | 440 this._graphRow = graphRow; |
| 548 } | 441 } |
| 549 } | 442 } |
| 550 | |
| 551 /** | |
| 552 * @interface | |
| 553 */ | |
| 554 WebInspector.TimelinePresentationModel.Filter = function() | |
| 555 { | |
| 556 } | |
| 557 | |
| 558 WebInspector.TimelinePresentationModel.Filter.prototype = { | |
| 559 /** | |
| 560 * @param {!WebInspector.TimelineModel.Record} record | |
| 561 * @return {boolean} | |
| 562 */ | |
| 563 accept: function(record) { return false; } | |
| 564 } | |
| OLD | NEW |