| Index: Source/devtools/front_end/timeline/TimelineModel.js
|
| diff --git a/Source/devtools/front_end/timeline/TimelineModel.js b/Source/devtools/front_end/timeline/TimelineModel.js
|
| index 0a768dfee48b297b2e9f2f7b585eae4f5208c946..dc9c8b2105a37b6fddb61b33e38c80b66a8374ed 100644
|
| --- a/Source/devtools/front_end/timeline/TimelineModel.js
|
| +++ b/Source/devtools/front_end/timeline/TimelineModel.js
|
| @@ -755,6 +755,8 @@ WebInspector.TimelineModel.prototype = {
|
| this._lastRecalculateStylesEvent = null;
|
| this._currentScriptEvent = null;
|
| this._eventStack = [];
|
| + this._layerTreeActivatedAfterLoad = false;
|
| + this._expectFirstPaint = false;
|
| },
|
|
|
| /**
|
| @@ -765,6 +767,7 @@ WebInspector.TimelineModel.prototype = {
|
| */
|
| _processThreadEvents: function(startTime, endTime, mainThread, thread)
|
| {
|
| + var recordTypes = WebInspector.TimelineModel.RecordType;
|
| var events = thread.events();
|
| var length = events.length;
|
| var i = events.lowerBound(startTime, function (time, event) { return time - event.startTime });
|
| @@ -787,6 +790,10 @@ WebInspector.TimelineModel.prototype = {
|
| if (endTime && event.startTime >= endTime)
|
| break;
|
| this._processEvent(event);
|
| + if (this._expectFirstPaint && event.name === recordTypes.DrawFrame && this._layerTreeActivatedAfterLoad) {
|
| + threadEvents.push(new WebInspector.TracingModel.Event(event.category, recordTypes.MarkFirstPaint, WebInspector.TracingModel.Phase.Instant, event.startTime, event.thread));
|
| + this._expectFirstPaint = false;
|
| + }
|
| threadEvents.push(event);
|
| this._inspectedTargetEvents.push(event);
|
| }
|
| @@ -813,7 +820,6 @@ WebInspector.TimelineModel.prototype = {
|
| _processEvent: function(event)
|
| {
|
| var recordTypes = WebInspector.TimelineModel.RecordType;
|
| -
|
| var eventStack = this._eventStack;
|
| while (eventStack.length && eventStack.peekLast().endTime < event.startTime)
|
| eventStack.pop();
|
| @@ -983,6 +989,17 @@ WebInspector.TimelineModel.prototype = {
|
| event.backendNodeId = paintImageEvent.backendNodeId;
|
| event.imageURL = paintImageEvent.imageURL;
|
| break;
|
| +
|
| + case recordTypes.MarkDOMContent:
|
| + if (!event.args["data"]["isMainFrame"])
|
| + break;
|
| + this._expectFirstPaint = true;
|
| + this._layerTreeActivatedAfterLoad = false;
|
| + break;
|
| +
|
| + case recordTypes.ActivateLayerTree:
|
| + this._layerTreeActivatedAfterLoad = true;
|
| + break;
|
| }
|
| },
|
|
|
|
|