| OLD | NEW |
| 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 651 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 662 * @param {!Array.<number>} quad | 662 * @param {!Array.<number>} quad |
| 663 * @return {number} | 663 * @return {number} |
| 664 */ | 664 */ |
| 665 WebInspector.TimelineUIUtils._quadWidth = function(quad) | 665 WebInspector.TimelineUIUtils._quadWidth = function(quad) |
| 666 { | 666 { |
| 667 return Math.round(Math.sqrt(Math.pow(quad[0] - quad[2], 2) + Math.pow(quad[1
] - quad[3], 2))); | 667 return Math.round(Math.sqrt(Math.pow(quad[0] - quad[2], 2) + Math.pow(quad[1
] - quad[3], 2))); |
| 668 } | 668 } |
| 669 | 669 |
| 670 /** | 670 /** |
| 671 * @param {!WebInspector.TracingModel.Event} event | 671 * @param {!WebInspector.TracingModel.Event} event |
| 672 * @param {!WebInspector.TracingModel} model | 672 * @param {!WebInspector.TracingTimelineModel} model |
| 673 * @param {!WebInspector.Linkifier} linkifier | 673 * @param {!WebInspector.Linkifier} linkifier |
| 674 * @param {function(!DocumentFragment)} callback | 674 * @param {function(!DocumentFragment)} callback |
| 675 * @param {boolean} loadedFromFile | 675 * @param {boolean} loadedFromFile |
| 676 * @param {?WebInspector.TimelineTraceEventBindings} bindings | |
| 677 * @param {!WebInspector.Target} target | 676 * @param {!WebInspector.Target} target |
| 678 */ | 677 */ |
| 679 WebInspector.TimelineUIUtils.buildTraceEventDetails = function(event, model, lin
kifier, callback, loadedFromFile, bindings, target) | 678 WebInspector.TimelineUIUtils.buildTraceEventDetails = function(event, model, lin
kifier, callback, loadedFromFile, target) |
| 680 { | 679 { |
| 681 var relatedNode = null; | 680 var relatedNode = null; |
| 682 var barrier = new CallbackBarrier(); | 681 var barrier = new CallbackBarrier(); |
| 683 if (event.imageURL && !event.previewElement) | 682 if (event.imageURL && !event.previewElement) |
| 684 WebInspector.DOMPresentationUtils.buildImagePreviewContents(target, even
t.imageURL, false, barrier.createCallback(saveImage)); | 683 WebInspector.DOMPresentationUtils.buildImagePreviewContents(target, even
t.imageURL, false, barrier.createCallback(saveImage)); |
| 685 if (event.backendNodeId) | 684 if (event.backendNodeId) |
| 686 target.domModel.pushNodesByBackendIdsToFrontend([event.backendNodeId], b
arrier.createCallback(setRelatedNode)); | 685 target.domModel.pushNodesByBackendIdsToFrontend([event.backendNodeId], b
arrier.createCallback(setRelatedNode)); |
| 687 barrier.callWhenDone(callbackWrapper); | 686 barrier.callWhenDone(callbackWrapper); |
| 688 | 687 |
| 689 /** | 688 /** |
| 690 * @param {!Element=} element | 689 * @param {!Element=} element |
| 691 */ | 690 */ |
| 692 function saveImage(element) | 691 function saveImage(element) |
| 693 { | 692 { |
| 694 event.previewElement = element || null; | 693 event.previewElement = element || null; |
| 695 } | 694 } |
| 696 | 695 |
| 697 /** | 696 /** |
| 698 * @param {?Array.<!DOMAgent.NodeId>} nodeIds | 697 * @param {?Array.<!DOMAgent.NodeId>} nodeIds |
| 699 */ | 698 */ |
| 700 function setRelatedNode(nodeIds) | 699 function setRelatedNode(nodeIds) |
| 701 { | 700 { |
| 702 if (nodeIds) | 701 if (nodeIds) |
| 703 relatedNode = target.domModel.nodeForId(nodeIds[0]); | 702 relatedNode = target.domModel.nodeForId(nodeIds[0]); |
| 704 } | 703 } |
| 705 | 704 |
| 706 function callbackWrapper() | 705 function callbackWrapper() |
| 707 { | 706 { |
| 708 callback(WebInspector.TimelineUIUtils._buildTraceEventDetailsSynchronous
ly(event, model, linkifier, relatedNode, loadedFromFile, bindings, target)); | 707 callback(WebInspector.TimelineUIUtils._buildTraceEventDetailsSynchronous
ly(event, model, linkifier, relatedNode, loadedFromFile, target)); |
| 709 } | 708 } |
| 710 } | 709 } |
| 711 | 710 |
| 712 /** | 711 /** |
| 713 * @param {!WebInspector.TracingModel.Event} event | 712 * @param {!WebInspector.TracingModel.Event} event |
| 714 * @param {!WebInspector.TracingModel} model | 713 * @param {!WebInspector.TracingTimelineModel} model |
| 715 * @param {!WebInspector.Linkifier} linkifier | 714 * @param {!WebInspector.Linkifier} linkifier |
| 716 * @param {?WebInspector.DOMNode} relatedNode | 715 * @param {?WebInspector.DOMNode} relatedNode |
| 717 * @param {boolean} loadedFromFile | 716 * @param {boolean} loadedFromFile |
| 718 * @param {?WebInspector.TimelineTraceEventBindings} bindings | |
| 719 * @param {!WebInspector.Target} target | 717 * @param {!WebInspector.Target} target |
| 720 * @return {!DocumentFragment} | 718 * @return {!DocumentFragment} |
| 721 */ | 719 */ |
| 722 WebInspector.TimelineUIUtils._buildTraceEventDetailsSynchronously = function(eve
nt, model, linkifier, relatedNode, loadedFromFile, bindings, target) | 720 WebInspector.TimelineUIUtils._buildTraceEventDetailsSynchronously = function(eve
nt, model, linkifier, relatedNode, loadedFromFile, target) |
| 723 { | 721 { |
| 724 var fragment = document.createDocumentFragment(); | 722 var fragment = document.createDocumentFragment(); |
| 725 var stats = WebInspector.TimelineUIUtils._aggregatedStatsForTraceEvent(model
, event); | 723 var stats = WebInspector.TimelineUIUtils._aggregatedStatsForTraceEvent(model
, event); |
| 726 var pieChart = stats.hasChildren ? | 724 var pieChart = stats.hasChildren ? |
| 727 WebInspector.TimelineUIUtils.generatePieChart(stats.aggregatedStats, Web
Inspector.TimelineUIUtils.styleForTimelineEvent(event.name).category, event.self
Time / 1000) : | 725 WebInspector.TimelineUIUtils.generatePieChart(stats.aggregatedStats, Web
Inspector.TimelineUIUtils.styleForTimelineEvent(event.name).category, event.self
Time / 1000) : |
| 728 WebInspector.TimelineUIUtils.generatePieChart(stats.aggregatedStats); | 726 WebInspector.TimelineUIUtils.generatePieChart(stats.aggregatedStats); |
| 729 fragment.appendChild(pieChart); | 727 fragment.appendChild(pieChart); |
| 730 | 728 |
| 731 var recordTypes = WebInspector.TimelineTraceEventBindings.RecordType; | 729 var recordTypes = WebInspector.TracingTimelineModel.RecordType; |
| 732 | 730 |
| 733 // The messages may vary per event.name; | 731 // The messages may vary per event.name; |
| 734 var callSiteStackTraceLabel; | 732 var callSiteStackTraceLabel; |
| 735 var callStackLabel; | 733 var callStackLabel; |
| 736 var relatedNodeLabel; | 734 var relatedNodeLabel; |
| 737 | 735 |
| 738 var contentHelper = new WebInspector.TimelineDetailsContentHelper(target, li
nkifier, true); | 736 var contentHelper = new WebInspector.TimelineDetailsContentHelper(target, li
nkifier, true); |
| 739 contentHelper.appendTextRow(WebInspector.UIString("Self Time"), Number.milli
sToString(event.selfTime / 1000, true)); | 737 contentHelper.appendTextRow(WebInspector.UIString("Self Time"), Number.milli
sToString(event.selfTime / 1000, true)); |
| 740 contentHelper.appendTextRow(WebInspector.UIString("Start Time"), Number.mill
isToString((event.startTime - model.minimumRecordTime()) / 1000)); | 738 contentHelper.appendTextRow(WebInspector.UIString("Start Time"), Number.mill
isToString((event.startTime - model.minimumRecordTime()) / 1000)); |
| 741 var eventData = event.args.data; | 739 var eventData = event.args.data; |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 839 contentHelper.appendTextRow(WebInspector.UIString("URL"), initiatorD
ata["webSocketURL"]); | 837 contentHelper.appendTextRow(WebInspector.UIString("URL"), initiatorD
ata["webSocketURL"]); |
| 840 if (typeof initiatorData["webSocketProtocol"] !== "undefined") | 838 if (typeof initiatorData["webSocketProtocol"] !== "undefined") |
| 841 contentHelper.appendTextRow(WebInspector.UIString("WebSocket Protoco
l"), initiatorData["webSocketProtocol"]); | 839 contentHelper.appendTextRow(WebInspector.UIString("WebSocket Protoco
l"), initiatorData["webSocketProtocol"]); |
| 842 if (typeof eventData["message"] !== "undefined") | 840 if (typeof eventData["message"] !== "undefined") |
| 843 contentHelper.appendTextRow(WebInspector.UIString("Message"), eventD
ata["message"]); | 841 contentHelper.appendTextRow(WebInspector.UIString("Message"), eventD
ata["message"]); |
| 844 break; | 842 break; |
| 845 case recordTypes.EmbedderCallback: | 843 case recordTypes.EmbedderCallback: |
| 846 contentHelper.appendTextRow(WebInspector.UIString("Callback Function"),
eventData["callbackName"]); | 844 contentHelper.appendTextRow(WebInspector.UIString("Callback Function"),
eventData["callbackName"]); |
| 847 break; | 845 break; |
| 848 default: | 846 default: |
| 849 var detailsNode = WebInspector.TimelineUIUtils.buildDetailsNodeForTraceE
vent(event, linkifier, loadedFromFile, bindings, target); | 847 var detailsNode = WebInspector.TimelineUIUtils.buildDetailsNodeForTraceE
vent(event, linkifier, loadedFromFile, target); |
| 850 if (detailsNode) | 848 if (detailsNode) |
| 851 contentHelper.appendElementRow(WebInspector.UIString("Details"), det
ailsNode); | 849 contentHelper.appendElementRow(WebInspector.UIString("Details"), det
ailsNode); |
| 852 break; | 850 break; |
| 853 } | 851 } |
| 854 | 852 |
| 855 if (relatedNode) | 853 if (relatedNode) |
| 856 contentHelper.appendElementRow(relatedNodeLabel || WebInspector.UIString
("Related node"), WebInspector.DOMPresentationUtils.linkifyNodeReference(related
Node)); | 854 contentHelper.appendElementRow(relatedNodeLabel || WebInspector.UIString
("Related node"), WebInspector.DOMPresentationUtils.linkifyNodeReference(related
Node)); |
| 857 | 855 |
| 858 if (eventData && eventData["scriptName"] && event.name !== recordTypes.Funct
ionCall) | 856 if (eventData && eventData["scriptName"] && event.name !== recordTypes.Funct
ionCall) |
| 859 contentHelper.appendLocationRow(WebInspector.UIString("Function Call"),
eventData["scriptName"], eventData["scriptLine"]); | 857 contentHelper.appendLocationRow(WebInspector.UIString("Function Call"),
eventData["scriptName"], eventData["scriptLine"]); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 871 if (warning) { | 869 if (warning) { |
| 872 var div = document.createElement("div"); | 870 var div = document.createElement("div"); |
| 873 div.textContent = warning; | 871 div.textContent = warning; |
| 874 contentHelper.appendElementRow(WebInspector.UIString("Warning"), div); | 872 contentHelper.appendElementRow(WebInspector.UIString("Warning"), div); |
| 875 } | 873 } |
| 876 fragment.appendChild(contentHelper.element); | 874 fragment.appendChild(contentHelper.element); |
| 877 return fragment; | 875 return fragment; |
| 878 } | 876 } |
| 879 | 877 |
| 880 /** | 878 /** |
| 881 * @param {!WebInspector.TracingModel} model | 879 * @param {!WebInspector.TracingTimelineModel} model |
| 882 * @param {!WebInspector.TracingModel.Event} event | 880 * @param {!WebInspector.TracingModel.Event} event |
| 883 * @return {!{ aggregatedStats: !Object, hasChildren: boolean }} | 881 * @return {!{ aggregatedStats: !Object, hasChildren: boolean }} |
| 884 */ | 882 */ |
| 885 WebInspector.TimelineUIUtils._aggregatedStatsForTraceEvent = function(model, eve
nt) | 883 WebInspector.TimelineUIUtils._aggregatedStatsForTraceEvent = function(model, eve
nt) |
| 886 { | 884 { |
| 887 var events = model.inspectedTargetEvents(); | 885 var events = model.inspectedTargetEvents(); |
| 888 /** | 886 /** |
| 889 * @param {number} startTime | 887 * @param {number} startTime |
| 890 * @param {!WebInspector.TracingModel.Event} e | 888 * @param {!WebInspector.TracingModel.Event} e |
| 891 * @return {number} | 889 * @return {number} |
| (...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1052 if (record.callSiteStackTrace()) | 1050 if (record.callSiteStackTrace()) |
| 1053 return linkifyCallFrame(record.callSiteStackTrace()[0]); | 1051 return linkifyCallFrame(record.callSiteStackTrace()[0]); |
| 1054 return null; | 1052 return null; |
| 1055 } | 1053 } |
| 1056 } | 1054 } |
| 1057 | 1055 |
| 1058 /** | 1056 /** |
| 1059 * @param {!WebInspector.TracingModel.Event} event | 1057 * @param {!WebInspector.TracingModel.Event} event |
| 1060 * @param {!WebInspector.Linkifier} linkifier | 1058 * @param {!WebInspector.Linkifier} linkifier |
| 1061 * @param {boolean} loadedFromFile | 1059 * @param {boolean} loadedFromFile |
| 1062 * @param {?WebInspector.TimelineTraceEventBindings} bindings | |
| 1063 * @param {!WebInspector.Target} target | 1060 * @param {!WebInspector.Target} target |
| 1064 * @return {?Node} | 1061 * @return {?Node} |
| 1065 */ | 1062 */ |
| 1066 WebInspector.TimelineUIUtils.buildDetailsNodeForTraceEvent = function(event, lin
kifier, loadedFromFile, bindings, target) | 1063 WebInspector.TimelineUIUtils.buildDetailsNodeForTraceEvent = function(event, lin
kifier, loadedFromFile, target) |
| 1067 { | 1064 { |
| 1068 var recordType = WebInspector.TimelineTraceEventBindings.RecordType; | 1065 var recordType = WebInspector.TracingTimelineModel.RecordType; |
| 1069 | 1066 |
| 1070 var details; | 1067 var details; |
| 1071 var detailsText; | 1068 var detailsText; |
| 1072 var eventData = event.args.data; | 1069 var eventData = event.args.data; |
| 1073 switch (event.name) { | 1070 switch (event.name) { |
| 1074 case recordType.GCEvent: | 1071 case recordType.GCEvent: |
| 1075 var delta = event.args["usedHeapSizeBefore"] - event.args["usedHeapSizeA
fter"]; | 1072 var delta = event.args["usedHeapSizeBefore"] - event.args["usedHeapSizeA
fter"]; |
| 1076 detailsText = WebInspector.UIString("%s collected", Number.bytesToString
(delta)); | 1073 detailsText = WebInspector.UIString("%s collected", Number.bytesToString
(delta)); |
| 1077 break; | 1074 break; |
| 1078 case recordType.TimerFire: | 1075 case recordType.TimerFire: |
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1187 function linkifyCallFrame(callFrame) | 1184 function linkifyCallFrame(callFrame) |
| 1188 { | 1185 { |
| 1189 return linkifyLocation(callFrame.scriptId, callFrame.url, callFrame.line
Number, callFrame.columnNumber); | 1186 return linkifyLocation(callFrame.scriptId, callFrame.url, callFrame.line
Number, callFrame.columnNumber); |
| 1190 } | 1187 } |
| 1191 | 1188 |
| 1192 /** | 1189 /** |
| 1193 * @return {?Element} | 1190 * @return {?Element} |
| 1194 */ | 1191 */ |
| 1195 function linkifyTopCallFrame() | 1192 function linkifyTopCallFrame() |
| 1196 { | 1193 { |
| 1197 if (!bindings) | |
| 1198 return null; | |
| 1199 var stackTrace = event.stackTrace; | 1194 var stackTrace = event.stackTrace; |
| 1200 if (!stackTrace) { | 1195 if (!stackTrace) { |
| 1201 var initiator = event.initiator; | 1196 var initiator = event.initiator; |
| 1202 if (initiator) | 1197 if (initiator) |
| 1203 stackTrace = initiator.stackTrace; | 1198 stackTrace = initiator.stackTrace; |
| 1204 } | 1199 } |
| 1205 if (!stackTrace || !stackTrace.length) | 1200 if (!stackTrace || !stackTrace.length) |
| 1206 return null; | 1201 return null; |
| 1207 return linkifyCallFrame(stackTrace[0]); | 1202 return linkifyCallFrame(stackTrace[0]); |
| 1208 } | 1203 } |
| (...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1394 for (var i = 0; i < stackTrace.length; ++i) { | 1389 for (var i = 0; i < stackTrace.length; ++i) { |
| 1395 var stackFrame = stackTrace[i]; | 1390 var stackFrame = stackTrace[i]; |
| 1396 var row = stackTraceElement.createChild("div"); | 1391 var row = stackTraceElement.createChild("div"); |
| 1397 row.createTextChild(stackFrame.functionName || WebInspector.UIString
("(anonymous function)")); | 1392 row.createTextChild(stackFrame.functionName || WebInspector.UIString
("(anonymous function)")); |
| 1398 row.createTextChild(" @ "); | 1393 row.createTextChild(" @ "); |
| 1399 var urlElement = this._linkifier.linkifyLocation(this._target, stack
Frame.url, stackFrame.lineNumber - 1); | 1394 var urlElement = this._linkifier.linkifyLocation(this._target, stack
Frame.url, stackFrame.lineNumber - 1); |
| 1400 row.appendChild(urlElement); | 1395 row.appendChild(urlElement); |
| 1401 } | 1396 } |
| 1402 } | 1397 } |
| 1403 } | 1398 } |
| OLD | NEW |