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

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

Issue 1666563005: DevTools: merge ScriptCallStack and ScriptAsyncCallStack, move CallStacks from console to Runtime. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 months 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 * Copyright (C) 2012 Intel Inc. All rights reserved. 3 * Copyright (C) 2012 Intel Inc. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are 6 * modification, are permitted provided that the following conditions are
7 * met: 7 * met:
8 * 8 *
9 * * Redistributions of source code must retain the above copyright 9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
212 return true; 212 return true;
213 case recordTypes.MarkDOMContent: 213 case recordTypes.MarkDOMContent:
214 case recordTypes.MarkLoad: 214 case recordTypes.MarkLoad:
215 return event.args["data"]["isMainFrame"]; 215 return event.args["data"]["isMainFrame"];
216 default: 216 default:
217 return false; 217 return false;
218 } 218 }
219 } 219 }
220 220
221 /** 221 /**
222 * @param {!ConsoleAgent.CallFrame} frame 222 * @param {!RuntimeAgent.CallFrame} frame
223 * @return {boolean} 223 * @return {boolean}
224 */ 224 */
225 WebInspector.TimelineUIUtils.isUserFrame = function(frame) 225 WebInspector.TimelineUIUtils.isUserFrame = function(frame)
226 { 226 {
227 return frame.scriptId !== "0" && !frame.url.startsWith("native "); 227 return frame.scriptId !== "0" && !frame.url.startsWith("native ");
228 } 228 }
229 229
230 /** 230 /**
231 * @param {!WebInspector.TracingModel.Event} event 231 * @param {!WebInspector.TracingModel.Event} event
232 * @return {?ConsoleAgent.CallFrame} 232 * @return {?RuntimeAgent.CallFrame}
233 */ 233 */
234 WebInspector.TimelineUIUtils.topStackFrame = function(event) 234 WebInspector.TimelineUIUtils.topStackFrame = function(event)
235 { 235 {
236 var stackTrace = event.stackTrace || event.initiator && event.initiator.stac kTrace; 236 var callFrames = event.stackTrace;
237 return stackTrace && stackTrace.length ? stackTrace[0] : null; 237 if (!callFrames)
238 callFrames = event.initiator && event.initiator.stack ? event.initiator. stack.callFrames : null;
dgozman 2016/02/04 01:43:06 Double-check.
pfeldman 2016/02/04 03:16:00 Done.
239 return callFrames && callFrames.length ? callFrames[0] : null;
238 } 240 }
239 241
240 /** 242 /**
241 * @enum {symbol} 243 * @enum {symbol}
242 */ 244 */
243 WebInspector.TimelineUIUtils.NetworkCategory = { 245 WebInspector.TimelineUIUtils.NetworkCategory = {
244 HTML: Symbol("HTML"), 246 HTML: Symbol("HTML"),
245 Script: Symbol("Script"), 247 Script: Symbol("Script"),
246 Style: Symbol("Style"), 248 Style: Symbol("Style"),
247 Media: Symbol("Media"), 249 Media: Symbol("Media"),
(...skipping 492 matching lines...) Expand 10 before | Expand all | Expand 10 after
740 742
741 var relatedNode = relatedNodesMap && relatedNodesMap.get(event.backendNodeId ); 743 var relatedNode = relatedNodesMap && relatedNodesMap.get(event.backendNodeId );
742 if (relatedNode) 744 if (relatedNode)
743 contentHelper.appendElementRow(relatedNodeLabel || WebInspector.UIString ("Related Node"), WebInspector.DOMPresentationUtils.linkifyNodeReference(related Node)); 745 contentHelper.appendElementRow(relatedNodeLabel || WebInspector.UIString ("Related Node"), WebInspector.DOMPresentationUtils.linkifyNodeReference(related Node));
744 746
745 if (event.previewElement) { 747 if (event.previewElement) {
746 contentHelper.addSection(WebInspector.UIString("Preview")); 748 contentHelper.addSection(WebInspector.UIString("Preview"));
747 contentHelper.appendElementRow("", event.previewElement); 749 contentHelper.appendElementRow("", event.previewElement);
748 } 750 }
749 751
750 if (event.stackTrace || (event.initiator && event.initiator.stackTrace) || e vent.invalidationTrackingEvents) 752 if (event.stackTrace || (event.initiator && event.initiator.stack) || event. invalidationTrackingEvents)
751 WebInspector.TimelineUIUtils._generateCauses(event, model.target(), rela tedNodesMap, contentHelper); 753 WebInspector.TimelineUIUtils._generateCauses(event, model.target(), rela tedNodesMap, contentHelper);
752 754
753 var showPieChart = detailed && WebInspector.TimelineUIUtils._aggregatedStats ForTraceEvent(stats, model, event); 755 var showPieChart = detailed && WebInspector.TimelineUIUtils._aggregatedStats ForTraceEvent(stats, model, event);
754 if (showPieChart) { 756 if (showPieChart) {
755 contentHelper.addSection(WebInspector.UIString("Aggregated Time")); 757 contentHelper.addSection(WebInspector.UIString("Aggregated Time"));
756 var pieChart = WebInspector.TimelineUIUtils.generatePieChart(stats, WebI nspector.TimelineUIUtils.eventStyle(event).category, event.selfTime); 758 var pieChart = WebInspector.TimelineUIUtils.generatePieChart(stats, WebI nspector.TimelineUIUtils.eventStyle(event).category, event.selfTime);
757 contentHelper.appendElementRow("", pieChart); 759 contentHelper.appendElementRow("", pieChart);
758 } 760 }
759 761
760 return contentHelper.fragment; 762 return contentHelper.fragment;
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
913 function appendPreview(element) 915 function appendPreview(element)
914 { 916 {
915 if (element) 917 if (element)
916 contentHelper.appendElementRow(WebInspector.UIString("Preview"), req uest.previewElement); 918 contentHelper.appendElementRow(WebInspector.UIString("Preview"), req uest.previewElement);
917 return contentHelper.fragment; 919 return contentHelper.fragment;
918 } 920 }
919 return previewPromise.then(appendPreview); 921 return previewPromise.then(appendPreview);
920 } 922 }
921 923
922 /** 924 /**
925 * @param {!Array<!RuntimeAgent.CallFrame>} callFrames
926 * @return {!RuntimeAgent.StackTrace}
927 */
928 WebInspector.TimelineUIUtils._stackTraceFromCallFrames = function(callFrames)
929 {
930 return /** @type {!RuntimeAgent.StackTrace} */ ({ callFrames: callFrames });
931 }
932
933 /**
923 * @param {!WebInspector.TracingModel.Event} event 934 * @param {!WebInspector.TracingModel.Event} event
924 * @param {?WebInspector.Target} target 935 * @param {?WebInspector.Target} target
925 * @param {?Map<number, ?WebInspector.DOMNode>} relatedNodesMap 936 * @param {?Map<number, ?WebInspector.DOMNode>} relatedNodesMap
926 * @param {!WebInspector.TimelineDetailsContentHelper} contentHelper 937 * @param {!WebInspector.TimelineDetailsContentHelper} contentHelper
927 */ 938 */
928 WebInspector.TimelineUIUtils._generateCauses = function(event, target, relatedNo desMap, contentHelper) 939 WebInspector.TimelineUIUtils._generateCauses = function(event, target, relatedNo desMap, contentHelper)
929 { 940 {
930 var recordTypes = WebInspector.TimelineModel.RecordType; 941 var recordTypes = WebInspector.TimelineModel.RecordType;
931 942
932 var callSiteStackLabel; 943 var callSiteStackLabel;
(...skipping 16 matching lines...) Expand all
949 break; 960 break;
950 case recordTypes.Layout: 961 case recordTypes.Layout:
951 callSiteStackLabel = WebInspector.UIString("First Layout Invalidation"); 962 callSiteStackLabel = WebInspector.UIString("First Layout Invalidation");
952 stackLabel = WebInspector.UIString("Layout Forced"); 963 stackLabel = WebInspector.UIString("Layout Forced");
953 break; 964 break;
954 } 965 }
955 966
956 // Direct cause. 967 // Direct cause.
957 if (event.stackTrace && event.stackTrace.length) { 968 if (event.stackTrace && event.stackTrace.length) {
958 contentHelper.addSection(WebInspector.UIString("Call Stacks")); 969 contentHelper.addSection(WebInspector.UIString("Call Stacks"));
959 contentHelper.appendStackTrace(stackLabel || WebInspector.UIString("Stac k Trace"), event.stackTrace); 970 contentHelper.appendStackTrace(stackLabel || WebInspector.UIString("Stac k Trace"), WebInspector.TimelineUIUtils._stackTraceFromCallFrames(event.stackTra ce));
960 } 971 }
961 972
962 // Indirect causes. 973 // Indirect causes.
963 if (event.invalidationTrackingEvents && target) { // Full invalidation track ing (experimental). 974 if (event.invalidationTrackingEvents && target) { // Full invalidation track ing (experimental).
964 contentHelper.addSection(WebInspector.UIString("Invalidations")); 975 contentHelper.addSection(WebInspector.UIString("Invalidations"));
965 WebInspector.TimelineUIUtils._generateInvalidations(event, target, relat edNodesMap, contentHelper); 976 WebInspector.TimelineUIUtils._generateInvalidations(event, target, relat edNodesMap, contentHelper);
966 } else if (initiator && initiator.stackTrace) { // Partial invalidation trac king. 977 } else if (initiator && initiator.stack) { // Partial invalidation tracking.
967 contentHelper.appendStackTrace(callSiteStackLabel || WebInspector.UIStri ng("First Invalidated"), initiator.stackTrace); 978 contentHelper.appendStackTrace(callSiteStackLabel || WebInspector.UIStri ng("First Invalidated"), initiator.stack);
968 } 979 }
969 } 980 }
970 981
971 /** 982 /**
972 * @param {!WebInspector.TracingModel.Event} event 983 * @param {!WebInspector.TracingModel.Event} event
973 * @param {!WebInspector.Target} target 984 * @param {!WebInspector.Target} target
974 * @param {?Map<number, ?WebInspector.DOMNode>} relatedNodesMap 985 * @param {?Map<number, ?WebInspector.DOMNode>} relatedNodesMap
975 * @param {!WebInspector.TimelineDetailsContentHelper} contentHelper 986 * @param {!WebInspector.TimelineDetailsContentHelper} contentHelper
976 */ 987 */
977 WebInspector.TimelineUIUtils._generateInvalidations = function(event, target, re latedNodesMap, contentHelper) 988 WebInspector.TimelineUIUtils._generateInvalidations = function(event, target, re latedNodesMap, contentHelper)
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
1125 * @override 1136 * @override
1126 */ 1137 */
1127 onpopulate: function() 1138 onpopulate: function()
1128 { 1139 {
1129 var content = createElementWithClass("div", "content"); 1140 var content = createElementWithClass("div", "content");
1130 1141
1131 var first = this._invalidations[0]; 1142 var first = this._invalidations[0];
1132 if (first.cause.stackTrace) { 1143 if (first.cause.stackTrace) {
1133 var stack = content.createChild("div"); 1144 var stack = content.createChild("div");
1134 stack.createTextChild(WebInspector.UIString("Stack trace:")); 1145 stack.createTextChild(WebInspector.UIString("Stack trace:"));
1135 this._contentHelper.createChildStackTraceElement(stack, first.cause. stackTrace); 1146 this._contentHelper.createChildStackTraceElement(stack, WebInspector .TimelineUIUtils._stackTraceFromCallFrames(first.cause.stackTrace));
1136 } 1147 }
1137 1148
1138 content.createTextChild(this._invalidations.length > 1 ? WebInspector.UI String("Nodes:") : WebInspector.UIString("Node:")); 1149 content.createTextChild(this._invalidations.length > 1 ? WebInspector.UI String("Nodes:") : WebInspector.UIString("Node:"));
1139 var nodeList = content.createChild("div", "node-list"); 1150 var nodeList = content.createChild("div", "node-list");
1140 var firstNode = true; 1151 var firstNode = true;
1141 for (var i = 0; i < this._invalidations.length; i++) { 1152 for (var i = 0; i < this._invalidations.length; i++) {
1142 var invalidation = this._invalidations[i]; 1153 var invalidation = this._invalidations[i];
1143 var invalidationNode = this._createInvalidationNode(invalidation, tr ue); 1154 var invalidationNode = this._createInvalidationNode(invalidation, tr ue);
1144 if (invalidationNode) { 1155 if (invalidationNode) {
1145 if (!firstNode) 1156 if (!firstNode)
(...skipping 799 matching lines...) Expand 10 before | Expand all | Expand 10 after
1945 if (!this._linkifier || !this._target) 1956 if (!this._linkifier || !this._target)
1946 return; 1957 return;
1947 var locationContent = createElement("span"); 1958 var locationContent = createElement("span");
1948 locationContent.appendChild(this._linkifier.linkifyScriptLocation(this._ target, null, url, startLine - 1)); 1959 locationContent.appendChild(this._linkifier.linkifyScriptLocation(this._ target, null, url, startLine - 1));
1949 locationContent.createTextChild(String.sprintf(" [%s\u2026%s]", startLin e, endLine || "")); 1960 locationContent.createTextChild(String.sprintf(" [%s\u2026%s]", startLin e, endLine || ""));
1950 this.appendElementRow(title, locationContent); 1961 this.appendElementRow(title, locationContent);
1951 }, 1962 },
1952 1963
1953 /** 1964 /**
1954 * @param {string} title 1965 * @param {string} title
1955 * @param {!Array.<!ConsoleAgent.CallFrame>} stackTrace 1966 * @param {!RuntimeAgent.StackTrace} stackTrace
1956 */ 1967 */
1957 appendStackTrace: function(title, stackTrace) 1968 appendStackTrace: function(title, stackTrace)
1958 { 1969 {
1959 if (!this._linkifier || !this._target) 1970 if (!this._linkifier || !this._target)
1960 return; 1971 return;
1961 1972
1962 var rowElement = this._tableElement.createChild("div", "timeline-details -view-row"); 1973 var rowElement = this._tableElement.createChild("div", "timeline-details -view-row");
1963 rowElement.createChild("div", "timeline-details-view-row-title").textCon tent = title; 1974 rowElement.createChild("div", "timeline-details-view-row-title").textCon tent = title;
1964 this.createChildStackTraceElement(rowElement, stackTrace); 1975 this.createChildStackTraceElement(rowElement, stackTrace);
1965 }, 1976 },
1966 1977
1967 /** 1978 /**
1968 * @param {!Element} parentElement 1979 * @param {!Element} parentElement
1969 * @param {!Array.<!ConsoleAgent.CallFrame>} stackTrace 1980 * @param {!RuntimeAgent.StackTrace} stackTrace
1970 */ 1981 */
1971 createChildStackTraceElement: function(parentElement, stackTrace) 1982 createChildStackTraceElement: function(parentElement, stackTrace)
1972 { 1983 {
1973 if (!this._linkifier || !this._target) 1984 if (!this._linkifier || !this._target)
1974 return; 1985 return;
1975 parentElement.classList.add("timeline-details-stack-values"); 1986 parentElement.classList.add("timeline-details-stack-values");
1976 var stackTraceElement = parentElement.createChild("div", "timeline-detai ls-view-row-value timeline-details-view-row-stack-trace"); 1987 var stackTraceElement = parentElement.createChild("div", "timeline-detai ls-view-row-value timeline-details-view-row-stack-trace");
1977 var callFrameElem = WebInspector.DOMPresentationUtils.buildStackTracePre viewContents(this._target, this._linkifier, stackTrace); 1988 var callFrameElem = WebInspector.DOMPresentationUtils.buildStackTracePre viewContents(this._target, this._linkifier, stackTrace);
1978 stackTraceElement.appendChild(callFrameElem); 1989 stackTraceElement.appendChild(callFrameElem);
1979 }, 1990 },
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
2018 case warnings.V8Deopt: 2029 case warnings.V8Deopt:
2019 span.appendChild(WebInspector.linkifyURLAsNode("https://github.com/Googl eChrome/devtools-docs/issues/53", 2030 span.appendChild(WebInspector.linkifyURLAsNode("https://github.com/Googl eChrome/devtools-docs/issues/53",
2020 WebInspector.UIString("Not optimized"), undefined, true)); 2031 WebInspector.UIString("Not optimized"), undefined, true));
2021 span.createTextChild(WebInspector.UIString(": %s", eventData["deoptReaso n"])); 2032 span.createTextChild(WebInspector.UIString(": %s", eventData["deoptReaso n"]));
2022 break; 2033 break;
2023 default: 2034 default:
2024 console.assert(false, "Unhandled TimelineModel.WarningType"); 2035 console.assert(false, "Unhandled TimelineModel.WarningType");
2025 } 2036 }
2026 return span; 2037 return span;
2027 } 2038 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698