| Index: Source/devtools/front_end/timeline/TracingTimelineUIUtils.js
|
| diff --git a/Source/devtools/front_end/timeline/TracingTimelineUIUtils.js b/Source/devtools/front_end/timeline/TracingTimelineUIUtils.js
|
| index 187e35ad4a55afcd6cef35f8a8a2d7faa08f1a47..d5deb7df5c91833a26673fc619169343caa7bc0a 100644
|
| --- a/Source/devtools/front_end/timeline/TracingTimelineUIUtils.js
|
| +++ b/Source/devtools/front_end/timeline/TracingTimelineUIUtils.js
|
| @@ -40,6 +40,7 @@ WebInspector.TracingTimelineUIUtils._initEventStyles = function()
|
| eventStyles[recordTypes.InvalidateLayout] = new WebInspector.TimelineRecordStyle(WebInspector.UIString("Invalidate Layout"), categories["rendering"]);
|
| eventStyles[recordTypes.Layout] = new WebInspector.TimelineRecordStyle(WebInspector.UIString("Layout"), categories["rendering"]);
|
| eventStyles[recordTypes.PaintSetup] = new WebInspector.TimelineRecordStyle(WebInspector.UIString("Paint Setup"), categories["painting"]);
|
| + eventStyles[recordTypes.UpdateLayer] = new WebInspector.TimelineRecordStyle(WebInspector.UIString("Update Layer"), categories["painting"]);
|
| eventStyles[recordTypes.Paint] = new WebInspector.TimelineRecordStyle(WebInspector.UIString("Paint"), categories["painting"]);
|
| eventStyles[recordTypes.Rasterize] = new WebInspector.TimelineRecordStyle(WebInspector.UIString("Paint"), categories["painting"]);
|
| eventStyles[recordTypes.RasterTask] = new WebInspector.TimelineRecordStyle(WebInspector.UIString("Paint"), categories["painting"]);
|
| @@ -265,8 +266,12 @@ WebInspector.TracingTimelineUIUtils.buildTraceEventDetails = function(event, mod
|
| {
|
| var relatedNode = null;
|
| var barrier = new CallbackBarrier();
|
| - if (event.imageURL && !event.previewElement)
|
| - WebInspector.DOMPresentationUtils.buildImagePreviewContents(target, event.imageURL, false, barrier.createCallback(saveImage));
|
| + if (!event.previewElement) {
|
| + if (event.imageURL)
|
| + WebInspector.DOMPresentationUtils.buildImagePreviewContents(target, event.imageURL, false, barrier.createCallback(saveImage));
|
| + else if (event.picture)
|
| + WebInspector.TracingTimelineUIUtils._buildPicturePreviewContent(event.picture, barrier.createCallback(saveImage));
|
| + }
|
| if (event.backendNodeId)
|
| target.domModel.pushNodesByBackendIdsToFrontend([event.backendNodeId], barrier.createCallback(setRelatedNode));
|
| barrier.callWhenDone(callbackWrapper);
|
| @@ -357,8 +362,6 @@ WebInspector.TracingTimelineUIUtils._buildTraceEventDetailsSynchronously = funct
|
| var url = (event.name === recordTypes.ResourceSendRequest) ? eventData["url"] : initiator.args.data["url"];
|
| if (url)
|
| contentHelper.appendElementRow(WebInspector.UIString("Resource"), WebInspector.linkifyResourceAsNode(url));
|
| - if (event.previewElement)
|
| - contentHelper.appendElementRow(WebInspector.UIString("Preview"), event.previewElement);
|
| if (eventData["requestMethod"])
|
| contentHelper.appendTextRow(WebInspector.UIString("Request Method"), eventData["requestMethod"]);
|
| if (typeof eventData["statusCode"] === "number")
|
| @@ -394,8 +397,6 @@ WebInspector.TracingTimelineUIUtils._buildTraceEventDetailsSynchronously = funct
|
| relatedNodeLabel = WebInspector.UIString("Image element");
|
| if (event.imageURL)
|
| contentHelper.appendElementRow(WebInspector.UIString("Image URL"), WebInspector.linkifyResourceAsNode(event.imageURL));
|
| - if (event.previewElement)
|
| - contentHelper.appendElementRow(WebInspector.UIString("Preview"), event.previewElement);
|
| break;
|
| case recordTypes.RecalculateStyles: // We don't want to see default details.
|
| contentHelper.appendTextRow(WebInspector.UIString("Elements affected"), event.args["elementCount"]);
|
| @@ -457,6 +458,8 @@ WebInspector.TracingTimelineUIUtils._buildTraceEventDetailsSynchronously = funct
|
| div.textContent = warning;
|
| contentHelper.appendElementRow(WebInspector.UIString("Warning"), div);
|
| }
|
| + if (event.previewElement)
|
| + contentHelper.appendElementRow(WebInspector.UIString("Preview"), event.previewElement);
|
| fragment.appendChild(contentHelper.element);
|
| return fragment;
|
| }
|
| @@ -497,3 +500,47 @@ WebInspector.TracingTimelineUIUtils._aggregatedStatsForTraceEvent = function(mod
|
| }
|
| return { aggregatedStats: aggregatedStats, hasChildren: hasChildren };
|
| }
|
| +
|
| +/**
|
| + * @param {string} encodedPicture
|
| + * @param {function(!Element=)} callback
|
| + */
|
| +WebInspector.TracingTimelineUIUtils._buildPicturePreviewContent = function(encodedPicture, callback)
|
| +{
|
| + var snapshotId;
|
| +
|
| + LayerTreeAgent.loadSnapshot(encodedPicture, onSnapshotLoaded);
|
| + /**
|
| + * @param {string} error
|
| + * @param {string} id
|
| + */
|
| + function onSnapshotLoaded(error, id)
|
| + {
|
| + if (error) {
|
| + console.error("LayerTreeAgent.loadSnapshot(): " + error);
|
| + callback();
|
| + return;
|
| + }
|
| + snapshotId = id;
|
| + LayerTreeAgent.replaySnapshot(snapshotId, onSnapshotReplayed);
|
| + }
|
| +
|
| + /**
|
| + * @param {string} error
|
| + * @param {string} encodedBitmap
|
| + */
|
| + function onSnapshotReplayed(error, encodedBitmap)
|
| + {
|
| + LayerTreeAgent.releaseSnapshot(snapshotId);
|
| + if (error) {
|
| + console.error("LayerTreeAgent.replaySnapshot(): " + error);
|
| + callback();
|
| + return;
|
| + }
|
| + var container = document.createElement("div");
|
| + container.className = "image-preview-container";
|
| + var img = container.createChild("img");
|
| + img.src = encodedBitmap;
|
| + callback(container);
|
| + }
|
| +}
|
|
|