Chromium Code Reviews| Index: third_party/WebKit/Source/devtools/front_end/timeline/TimelineFlameChartDataProvider.js |
| diff --git a/third_party/WebKit/Source/devtools/front_end/timeline/TimelineFlameChartDataProvider.js b/third_party/WebKit/Source/devtools/front_end/timeline/TimelineFlameChartDataProvider.js |
| index 296742004b644557735756968026e8b5259ca228..2566939b2eee50faffe7b976215ce25fff5fcc78 100644 |
| --- a/third_party/WebKit/Source/devtools/front_end/timeline/TimelineFlameChartDataProvider.js |
| +++ b/third_party/WebKit/Source/devtools/front_end/timeline/TimelineFlameChartDataProvider.js |
| @@ -865,20 +865,24 @@ Timeline.TimelineFlameChartDataProvider = class { |
| return false; |
| this._lastInitiatorEntry = entryIndex; |
| var event = this.eventByIndex(entryIndex); |
| - var initiator = event && TimelineModel.TimelineData.forEvent(event).initiator(); |
| - if (initiator && !this._isVisible(initiator)) |
| - initiator = null; |
| var td = this._timelineData; |
| - if (td.flowStartTimes.length || initiator) { |
| - td.flowStartTimes = []; |
| - td.flowStartLevels = []; |
| - td.flowEndTimes = []; |
| - td.flowEndLevels = []; |
| + td.flowStartTimes = []; |
| + td.flowStartLevels = []; |
| + td.flowEndTimes = []; |
| + td.flowEndLevels = []; |
| + // Find the closest ancestor with an initiator. |
| + var initiator; |
| + for (; event; event = TimelineModel.TimelineModel.parentEvent(event)) { |
| + if (!this._isVisible(event)) |
| + continue; |
| + initiator = TimelineModel.TimelineData.forEvent(event).initiator(); |
| + if (initiator) |
| + break; |
| } |
| - if (!initiator) |
| + if (!event || !initiator || !this._isVisible(initiator)) |
|
caseq
2017/03/29 22:08:20
nit: first clause is redundant
alph
2017/03/29 22:16:57
Done.
|
| return true; |
| - var initiatorIndex = initiator[Timeline.TimelineFlameChartDataProvider._indexSymbol]; |
| var eventIndex = event[Timeline.TimelineFlameChartDataProvider._indexSymbol]; |
| + var initiatorIndex = initiator[Timeline.TimelineFlameChartDataProvider._indexSymbol]; |
| td.flowStartTimes.push(initiator.endTime || initiator.startTime); |
| td.flowStartLevels.push(td.entryLevels[initiatorIndex]); |
| td.flowEndTimes.push(event.startTime); |