Index: Source/devtools/front_end/timeline/TimelineTraceEventBindings.js |
diff --git a/Source/devtools/front_end/timeline/TimelineTraceEventBindings.js b/Source/devtools/front_end/timeline/TimelineTraceEventBindings.js |
index 8640f1adc31b6d17d4d0887e894282b757fc1901..4b5b1533fa4f7790f5a833dd5493ff610c207257 100644 |
--- a/Source/devtools/front_end/timeline/TimelineTraceEventBindings.js |
+++ b/Source/devtools/front_end/timeline/TimelineTraceEventBindings.js |
@@ -28,11 +28,10 @@ WebInspector.TimelineTraceEventBindings.RecordType = { |
UpdateLayerTree: "UpdateLayerTree", |
PaintSetup: "PaintSetup", |
Paint: "Paint", |
+ PaintImage: "PaintImage", |
Rasterize: "Rasterize", |
RasterTask: "RasterTask", |
ScrollLayer: "ScrollLayer", |
- DecodeImage: "DecodeImage", |
- ResizeImage: "ResizeImage", |
CompositeLayers: "CompositeLayers", |
ParseHTML: "ParseHTML", |
@@ -78,6 +77,12 @@ WebInspector.TimelineTraceEventBindings.RecordType = { |
SetLayerTreeId: "SetLayerTreeId", |
TracingStartedInPage: "TracingStartedInPage", |
+ DecodeImage: "Decode Image", |
+ ResizeImage: "Resize Image", |
+ DrawLazyPixelRef: "Draw LazyPixelRef", |
+ DecodeLazyPixelRef: "Decode LazyPixelRef", |
+ |
+ LazyPixelRef: "LazyPixelRef", |
LayerTreeHostImplSnapshot: "cc::LayerTreeHostImpl" |
}; |
@@ -105,6 +110,7 @@ WebInspector.TimelineTraceEventBindings.prototype = { |
this._layoutInvalidate = {}; |
this._lastScheduleStyleRecalculation = {}; |
this._webSocketCreateEvents = {}; |
+ this._paintImageEventByPixelRefId = {}; |
this._lastRecalculateStylesEvent = null; |
this._currentScriptEvent = null; |
@@ -154,12 +160,15 @@ WebInspector.TimelineTraceEventBindings.prototype = { |
case recordTypes.ResourceSendRequest: |
this._sendRequestEvents[event.args.data["requestId"]] = event; |
+ event.imageURL = event.args.data["url"]; |
break; |
case recordTypes.ResourceReceiveResponse: |
case recordTypes.ResourceReceivedData: |
case recordTypes.ResourceFinish: |
event.initiator = this._sendRequestEvents[event.args.data["requestId"]]; |
+ if (event.initiator) |
+ event.imageURL = event.initiator.imageURL; |
break; |
case recordTypes.TimerInstall: |
@@ -200,6 +209,7 @@ WebInspector.TimelineTraceEventBindings.prototype = { |
case recordTypes.Layout: |
var frameId = event.args["beginData"]["frame"]; |
event.initiator = this._layoutInvalidate[frameId]; |
+ event.backendNodeId = event.args["endData"]["rootNode"]; |
this._layoutInvalidate[frameId] = null; |
if (this._currentScriptEvent) |
event.warning = WebInspector.UIString("Forced synchronous layout is a possible performance bottleneck."); |
@@ -228,9 +238,55 @@ WebInspector.TimelineTraceEventBindings.prototype = { |
case recordTypes.TracingStartedInPage: |
this._mainThread = event.thread; |
break; |
+ |
+ case recordTypes.Paint: |
+ case recordTypes.ScrollLayer: |
+ event.backendNodeId = event.args["data"]["nodeId"]; |
+ break; |
+ |
+ case recordTypes.PaintImage: |
+ event.backendNodeId = event.args["data"]["nodeId"]; |
+ event.imageURL = event.args["data"]["url"]; |
+ break; |
+ |
+ case recordTypes.DecodeImage: |
+ case recordTypes.ResizeImage: |
+ var paintImageEvent = this._findAncestorEvent(recordTypes.PaintImage); |
+ if (!paintImageEvent) { |
+ var decodeLazyPixelRefEvent = this._findAncestorEvent(recordTypes.DecodeLazyPixelRef); |
+ paintImageEvent = decodeLazyPixelRefEvent && this._paintImageEventByPixelRefId[decodeLazyPixelRefEvent.args["LazyPixelRef"]]; |
+ } |
+ if (!paintImageEvent) |
+ break; |
+ event.backendNodeId = paintImageEvent.backendNodeId; |
+ event.imageURL = paintImageEvent.imageURL; |
+ break; |
+ |
+ case recordTypes.DrawLazyPixelRef: |
+ var paintImageEvent = this._findAncestorEvent(recordTypes.PaintImage); |
+ if (!paintImageEvent) |
+ break; |
+ this._paintImageEventByPixelRefId[event.args["LazyPixelRef"]] = paintImageEvent; |
+ event.backendNodeId = paintImageEvent.backendNodeId; |
+ event.imageURL = paintImageEvent.imageURL; |
+ break; |
} |
if (this._mainThread === event.thread) |
this._mainThreadEvents.push(event); |
+ }, |
+ |
+ /** |
+ * @param {string} name |
+ * @return {?WebInspector.TracingModel.Event} |
+ */ |
+ _findAncestorEvent: function(name) |
+ { |
+ for (var i = this._eventStack.length - 1; i >= 0; --i) { |
+ var event = this._eventStack[i]; |
+ if (event.name === name) |
+ return event; |
+ } |
+ return null; |
} |
} |