Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(824)

Unified Diff: third_party/WebKit/Source/devtools/front_end/timeline/TimelineUIUtils.js

Issue 1514483002: DevTools: brush up new details cards on timeline. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/devtools/front_end/timeline/TimelineUIUtils.js
diff --git a/third_party/WebKit/Source/devtools/front_end/timeline/TimelineUIUtils.js b/third_party/WebKit/Source/devtools/front_end/timeline/TimelineUIUtils.js
index 20c5cbfbd22dbc75c3bbef99bc404106e83dbaab..5bc5b5aa60054ecd2d85202b9f7bf0da8bd1c4cf 100644
--- a/third_party/WebKit/Source/devtools/front_end/timeline/TimelineUIUtils.js
+++ b/third_party/WebKit/Source/devtools/front_end/timeline/TimelineUIUtils.js
@@ -588,21 +588,24 @@ WebInspector.TimelineUIUtils._buildTraceEventDetailsSynchronously = function(eve
// This message may vary per event.name;
var relatedNodeLabel;
- var contentHelper = new WebInspector.TimelineDetailsContentHelper(model.target(), linkifier, relatedNodesMap, false);
+ var contentHelper = new WebInspector.TimelineDetailsContentHelper(model.target(), linkifier, relatedNodesMap, WebInspector.TimelineUIUtils.eventTitle(event), WebInspector.TimelineUIUtils.eventStyle(event).category);
+
+ var eventData = event.args["data"];
+ var initiator = event.initiator;
if (event.warning)
contentHelper.appendWarningRow(event);
+ if (event.name === recordTypes.JSFrame) {
+ var deoptReason = eventData["deoptReason"];
+ if (deoptReason && deoptReason != "no reason")
+ contentHelper.appendWarningRow(event, WebInspector.TimelineModel.WarningType.V8Deopt);
+ }
if (detailed) {
- contentHelper.appendTextRow(WebInspector.UIString("Type"), WebInspector.TimelineUIUtils.eventTitle(event));
- contentHelper.appendTextRow(WebInspector.UIString("Total Time"), Number.millisToString(event.duration || 0, true));
contentHelper.appendTextRow(WebInspector.UIString("Self Time"), Number.millisToString(event.selfTime, true));
+ contentHelper.appendTextRow(WebInspector.UIString("Total Time"), Number.millisToString(event.duration || 0, true));
+ contentHelper.element.classList.add("timeline-details-lineup");
caseq 2015/12/09 00:47:19 What does this do?
}
- if (event.previewElement)
- contentHelper.appendElementRow(WebInspector.UIString("Preview"), event.previewElement);
-
- var eventData = event.args["data"];
- var initiator = event.initiator;
switch (event.name) {
case recordTypes.GCEvent:
@@ -615,9 +618,6 @@ WebInspector.TimelineUIUtils._buildTraceEventDetailsSynchronously = function(eve
var detailsNode = WebInspector.TimelineUIUtils.buildDetailsNodeForTraceEvent(event, model.target(), linkifier);
if (detailsNode)
contentHelper.appendElementRow(WebInspector.UIString("Function"), detailsNode);
- var deoptReason = eventData["deoptReason"];
- if (deoptReason && deoptReason != "no reason")
- contentHelper.appendWarningRow(event, WebInspector.TimelineModel.WarningType.V8Deopt);
break;
case recordTypes.TimerFire:
case recordTypes.TimerInstall:
@@ -695,9 +695,6 @@ WebInspector.TimelineUIUtils._buildTraceEventDetailsSynchronously = function(eve
case recordTypes.Layout:
var beginData = event.args["beginData"];
contentHelper.appendTextRow(WebInspector.UIString("Nodes That Need Layout"), beginData["dirtyObjects"]);
alph 2015/12/09 01:07:11 may be keep total, e.g.: 16 of 33.
- contentHelper.appendTextRow(WebInspector.UIString("Layout Tree Size"), beginData["totalObjects"]);
- contentHelper.appendTextRow(WebInspector.UIString("Layout Scope"),
- beginData["partialLayout"] ? WebInspector.UIString("Partial") : WebInspector.UIString("Whole document"));
relatedNodeLabel = WebInspector.UIString("Layout root");
break;
case recordTypes.ConsoleTime:
@@ -751,22 +748,34 @@ WebInspector.TimelineUIUtils._buildTraceEventDetailsSynchronously = function(eve
break;
}
+ if (event.previewElement) {
+ contentHelper = new WebInspector.TimelineDetailsContentHelper(model.target(), linkifier, relatedNodesMap);
caseq 2015/12/09 00:51:33 What is this meant to do? What happens to the cont
+ contentHelper.appendElementRow(WebInspector.UIString("Preview"), event.previewElement);
+ }
+
var relatedNode = contentHelper.nodeForBackendId(event.backendNodeId);
if (relatedNode)
contentHelper.appendElementRow(relatedNodeLabel || WebInspector.UIString("Related Node"), WebInspector.DOMPresentationUtils.linkifyNodeReference(relatedNode));
- if (eventData && eventData["scriptName"] && event.name !== recordTypes.FunctionCall)
+ if (eventData && eventData["scriptName"] && event.name !== recordTypes.FunctionCall) {
+ fragment.appendChild(contentHelper.element);
+ contentHelper = new WebInspector.TimelineDetailsContentHelper(model.target(), linkifier, relatedNodesMap);
contentHelper.appendLocationRow(WebInspector.UIString("Function Call"), eventData["scriptName"], eventData["scriptLine"]);
+ }
- if (event.stackTrace || (event.initiator && event.initiator.stackTrace) || event.invalidationTrackingEvents)
+ if (event.stackTrace || (event.initiator && event.initiator.stackTrace) || event.invalidationTrackingEvents) {
+ fragment.appendChild(contentHelper.element);
+ contentHelper = new WebInspector.TimelineDetailsContentHelper(model.target(), linkifier, relatedNodesMap, WebInspector.UIString("Call Stacks"));
WebInspector.TimelineUIUtils._generateCauses(event, model.target(), contentHelper);
+ }
var showPieChart = detailed && WebInspector.TimelineUIUtils._aggregatedStatsForTraceEvent(stats, model, event);
if (showPieChart) {
+ fragment.appendChild(contentHelper.element);
+ contentHelper = new WebInspector.TimelineDetailsContentHelper(model.target(), linkifier, relatedNodesMap, WebInspector.UIString("Aggregated Time"));
var pieChart = WebInspector.TimelineUIUtils.generatePieChart(stats, WebInspector.TimelineUIUtils.eventStyle(event).category, event.selfTime);
- contentHelper.appendElementRow(WebInspector.UIString("Aggregated Time"), pieChart);
+ contentHelper.appendElementRow("", pieChart);
}
-
fragment.appendChild(contentHelper.element);
return fragment;
@@ -819,13 +828,13 @@ WebInspector.TimelineUIUtils.buildRangeStats = function(model, startTime, endTim
aggregatedTotal += aggregatedStats[categoryName];
aggregatedStats["idle"] = Math.max(0, endTime - startTime - aggregatedTotal);
- var contentHelper = new WebInspector.TimelineDetailsContentHelper(null, null, null, false);
- var pieChart = WebInspector.TimelineUIUtils.generatePieChart(aggregatedStats);
-
var startOffset = startTime - model.minimumRecordTime();
var endOffset = endTime - model.minimumRecordTime();
- contentHelper.appendTextRow(WebInspector.UIString("Range"), WebInspector.UIString("%s \u2013 %s", Number.millisToString(startOffset), Number.millisToString(endOffset)));
- contentHelper.appendElementRow(WebInspector.UIString("Aggregated Time"), pieChart);
+
+ var contentHelper = new WebInspector.TimelineDetailsContentHelper(null, null, null, WebInspector.UIString("Range: %s \u2013 %s", Number.millisToString(startOffset), Number.millisToString(endOffset)));
+ var pieChart = WebInspector.TimelineUIUtils.generatePieChart(aggregatedStats);
+
+ contentHelper.appendElementRow("", pieChart);
return contentHelper.element;
}
@@ -890,7 +899,7 @@ WebInspector.TimelineUIUtils.buildNetworkRequestDetails = function(request, mode
{
var fragment = createDocumentFragment();
var target = model.target();
- var contentHelper = new WebInspector.TimelineDetailsContentHelper(target, linkifier, null, true);
+ var contentHelper = new WebInspector.TimelineDetailsContentHelper(target, linkifier, null);
var info = WebInspector.TimelineUIUtils.buildNetworkRequestInfo(request);
for (var item of info) {
@@ -968,7 +977,7 @@ WebInspector.TimelineUIUtils._generateCauses = function(event, target, contentHe
}
// Direct cause.
- if (event.stackTrace)
+ if (event.stackTrace && event.stackTrace.length)
contentHelper.appendStackTrace(stackLabel || WebInspector.UIString("Stack Trace"), event.stackTrace);
// Indirect causes.
@@ -1546,20 +1555,32 @@ WebInspector.TimelineUIUtils.generatePieChart = function(aggregatedStats, selfCa
*/
WebInspector.TimelineUIUtils.generateDetailsContentForFrame = function(frameModel, frame, filmStripFrame)
{
+ var result = createElementWithClass("div", "vbox");
var pieChart = WebInspector.TimelineUIUtils.generatePieChart(frame.timeByCategory);
- var contentHelper = new WebInspector.TimelineDetailsContentHelper(null, null, null, false);
+ var contentHelper = new WebInspector.TimelineDetailsContentHelper(null, null, null, WebInspector.UIString("Frame"));
+
+ if (frame.hasWarnings()) {
+ var value = createElement("span");
+ value.createTextChild(WebInspector.UIString("Long frame times are an indication of "));
+ value.appendChild(WebInspector.linkifyURLAsNode("https://developers.google.com/web/fundamentals/performance/rendering/",
+ WebInspector.UIString("jank"), undefined, true));
+ value.createTextChild(".");
+ contentHelper.appendElementRow(WebInspector.UIString("Warning"), value, true);
+ }
+
var duration = WebInspector.TimelineUIUtils.frameDuration(frame);
- contentHelper.appendElementRow(WebInspector.UIString("Duration"), duration, frame.hasWarnings());
+ contentHelper.appendElementRow(WebInspector.UIString("Duration"), duration, false);
if (filmStripFrame) {
var filmStripPreview = createElementWithClass("img", "timeline-filmstrip-preview");
filmStripFrame.imageDataPromise().then(onGotImageData.bind(null, filmStripPreview));
- contentHelper.appendElementRow(WebInspector.UIString("Screenshot"), filmStripPreview);
+ contentHelper.appendElementRow("", filmStripPreview);
filmStripPreview.addEventListener("click", frameClicked.bind(null, filmStripFrame), false);
}
var durationInMillis = frame.endTime - frame.startTime;
contentHelper.appendTextRow(WebInspector.UIString("FPS"), Math.floor(1000 / durationInMillis));
contentHelper.appendTextRow(WebInspector.UIString("CPU time"), Number.millisToString(frame.cpuTime, true));
- contentHelper.appendElementRow(WebInspector.UIString("Aggregated Time"), pieChart);
+ result.appendChild(contentHelper.element);
+
if (Runtime.experiments.isEnabled("layersPanel") && frame.layerTree) {
contentHelper.appendElementRow(WebInspector.UIString("Layer tree"),
WebInspector.Linkifier.linkifyUsingRevealer(frame.layerTree, WebInspector.UIString("show")));
@@ -1583,7 +1604,8 @@ WebInspector.TimelineUIUtils.generateDetailsContentForFrame = function(frameMode
new WebInspector.FilmStripView.Dialog(filmStripFrame, 0);
}
- return contentHelper.element;
+ result.appendChild(contentHelper.element);
alph 2015/12/09 01:07:11 doing it twice.
+ return result;
}
/**
@@ -1596,12 +1618,6 @@ WebInspector.TimelineUIUtils.frameDuration = function(frame)
Number.millisToString(frame.startTimeOffset, true));
var element = createElement("span");
element.createTextChild(durationText);
- if (!frame.hasWarnings())
- return element;
- element.createTextChild(WebInspector.UIString(". Long frame times are an indication of "));
- element.appendChild(WebInspector.linkifyURLAsNode("https://developers.google.com/web/fundamentals/performance/rendering/",
- WebInspector.UIString("jank"), undefined, true));
- element.createTextChild(".");
return element;
}
@@ -1923,16 +1939,23 @@ WebInspector.TimelinePopupContentHelper.prototype = {
* @param {?WebInspector.Target} target
* @param {?WebInspector.Linkifier} linkifier
* @param {?Map<number, ?WebInspector.DOMNode>} relatedNodesMap
- * @param {boolean} monospaceValues
+ * @param {string=} title
+ * @param {!WebInspector.TimelineCategory=} category
*/
-WebInspector.TimelineDetailsContentHelper = function(target, linkifier, relatedNodesMap, monospaceValues)
+WebInspector.TimelineDetailsContentHelper = function(target, linkifier, relatedNodesMap, title, category)
{
this._linkifier = linkifier;
this._target = target;
this._relatedNodesMap = relatedNodesMap;
- this.element = createElement("div");
- this.element.className = "timeline-details-view-block";
- this._monospaceValues = monospaceValues;
+ this.element = createElementWithClass("div", "timeline-details-view-block");
+
+ if (title) {
+ var titleElement = this.element.createChild("div", "timeline-details-chip-title");
+ if (category)
+ titleElement.createChild("div", "timeline-" + category.name);
+ titleElement.createTextChild(title);
+ }
+ this._tableElement = this.element.createChild("div", "vbox timeline-details-chip-body");
}
WebInspector.TimelineDetailsContentHelper.prototype = {
@@ -1961,24 +1984,27 @@ WebInspector.TimelineDetailsContentHelper.prototype = {
*/
appendTextRow: function(title, value)
{
- var rowElement = this.element.createChild("div", "timeline-details-view-row");
+ var rowElement = this._tableElement.createChild("div", "timeline-details-view-row");
rowElement.createChild("div", "timeline-details-view-row-title").textContent = title;
- rowElement.createChild("div", "timeline-details-view-row-value" + (this._monospaceValues ? " monospace" : "")).textContent = value;
+ rowElement.createChild("div", "timeline-details-view-row-value").textContent = value;
},
/**
* @param {string} title
* @param {!Node|string} content
* @param {boolean=} isWarning
+ * @param {boolean=} isStacked
*/
- appendElementRow: function(title, content, isWarning)
+ appendElementRow: function(title, content, isWarning, isStacked)
{
- var rowElement = this.element.createChild("div", "timeline-details-view-row");
+ var rowElement = this._tableElement.createChild("div", "timeline-details-view-row");
if (isWarning)
rowElement.classList.add("timeline-details-warning");
+ if (isStacked)
+ rowElement.classList.add("timeline-details-stack-values");
var titleElement = rowElement.createChild("div", "timeline-details-view-row-title");
titleElement.textContent = title;
- var valueElement = rowElement.createChild("div", "timeline-details-view-row-value" + (this._monospaceValues ? " monospace" : ""));
+ var valueElement = rowElement.createChild("div", "timeline-details-view-row-value");
if (content instanceof Node)
valueElement.appendChild(content);
else
@@ -2025,7 +2051,7 @@ WebInspector.TimelineDetailsContentHelper.prototype = {
if (!this._linkifier || !this._target)
return;
- var rowElement = this.element.createChild("div", "timeline-details-view-row");
+ var rowElement = this._tableElement.createChild("div", "timeline-details-view-row");
rowElement.createChild("div", "timeline-details-view-row-title").textContent = title;
this.createChildStackTraceElement(rowElement, stackTrace);
},
@@ -2038,11 +2064,9 @@ WebInspector.TimelineDetailsContentHelper.prototype = {
{
if (!this._linkifier || !this._target)
return;
-
- var stackTraceElement = parentElement.createChild("div", "timeline-details-view-row-value timeline-details-view-row-stack-trace monospace");
-
+ parentElement.classList.add("timeline-details-stack-values");
+ var stackTraceElement = parentElement.createChild("div", "timeline-details-view-row-value timeline-details-view-row-stack-trace");
var callFrameElem = WebInspector.DOMPresentationUtils.buildStackTracePreviewContents(this._target, this._linkifier, stackTrace);
-
stackTraceElement.appendChild(callFrameElem);
},

Powered by Google App Engine
This is Rietveld 408576698