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 720 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
731 * @param {?WebInspector.DOMNode} relatedNode | 731 * @param {?WebInspector.DOMNode} relatedNode |
732 * @param {boolean} loadedFromFile | 732 * @param {boolean} loadedFromFile |
733 * @param {?WebInspector.TimelineTraceEventBindings} bindings | 733 * @param {?WebInspector.TimelineTraceEventBindings} bindings |
734 * @param {!WebInspector.Target} target | 734 * @param {!WebInspector.Target} target |
735 * @return {!DocumentFragment} | 735 * @return {!DocumentFragment} |
736 */ | 736 */ |
737 WebInspector.TimelineUIUtils._buildTraceEventDetailsSynchronously = function(eve
nt, model, linkifier, imagePreviewElement, relatedNode, loadedFromFile, bindings
, target) | 737 WebInspector.TimelineUIUtils._buildTraceEventDetailsSynchronously = function(eve
nt, model, linkifier, imagePreviewElement, relatedNode, loadedFromFile, bindings
, target) |
738 { | 738 { |
739 var fragment = document.createDocumentFragment(); | 739 var fragment = document.createDocumentFragment(); |
740 var stats = WebInspector.TimelineUIUtils._aggregatedStatsForTraceEvent(model
, event); | 740 var stats = WebInspector.TimelineUIUtils._aggregatedStatsForTraceEvent(model
, event); |
741 fragment.appendChild(WebInspector.TimelineUIUtils.generatePieChart(stats)); | 741 var pieChart = stats.hasChildren ? |
| 742 WebInspector.TimelineUIUtils.generatePieChart(stats.aggregatedStats, Web
Inspector.TimelineUIUtils.styleForTimelineEvent(event.name).category, event.self
Time) : |
| 743 WebInspector.TimelineUIUtils.generatePieChart(stats.aggregatedStats); |
| 744 fragment.appendChild(pieChart); |
742 | 745 |
743 var recordTypes = WebInspector.TimelineModel.RecordType; | 746 var recordTypes = WebInspector.TimelineModel.RecordType; |
744 | 747 |
745 // The messages may vary per event.name; | 748 // The messages may vary per event.name; |
746 var callSiteStackTraceLabel; | 749 var callSiteStackTraceLabel; |
747 var callStackLabel; | 750 var callStackLabel; |
748 var relatedNodeLabel; | 751 var relatedNodeLabel; |
749 | 752 |
750 var contentHelper = new WebInspector.TimelineDetailsContentHelper(target, li
nkifier, true); | 753 var contentHelper = new WebInspector.TimelineDetailsContentHelper(target, li
nkifier, true); |
751 contentHelper.appendTextRow(WebInspector.UIString("Self Time"), Number.milli
sToString(event.selfTime / 1000, true)); | 754 contentHelper.appendTextRow(WebInspector.UIString("Self Time"), Number.milli
sToString(event.selfTime / 1000, true)); |
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
881 div.textContent = warning; | 884 div.textContent = warning; |
882 contentHelper.appendElementRow(WebInspector.UIString("Warning"), div); | 885 contentHelper.appendElementRow(WebInspector.UIString("Warning"), div); |
883 } | 886 } |
884 fragment.appendChild(contentHelper.element); | 887 fragment.appendChild(contentHelper.element); |
885 return fragment; | 888 return fragment; |
886 } | 889 } |
887 | 890 |
888 /** | 891 /** |
889 * @param {!WebInspector.TracingModel} model | 892 * @param {!WebInspector.TracingModel} model |
890 * @param {!WebInspector.TracingModel.Event} event | 893 * @param {!WebInspector.TracingModel.Event} event |
891 * @return {!Object} | 894 * @return {!{ aggregatedStats: !Object, hasChildren: boolean }} |
892 */ | 895 */ |
893 WebInspector.TimelineUIUtils._aggregatedStatsForTraceEvent = function(model, eve
nt) | 896 WebInspector.TimelineUIUtils._aggregatedStatsForTraceEvent = function(model, eve
nt) |
894 { | 897 { |
895 var events = model.inspectedTargetEvents(); | 898 var events = model.inspectedTargetEvents(); |
896 /** | 899 /** |
897 * @param {number} startTime | 900 * @param {number} startTime |
898 * @param {!WebInspector.TracingModel.Event} e | 901 * @param {!WebInspector.TracingModel.Event} e |
899 * @return {number} | 902 * @return {number} |
900 */ | 903 */ |
901 function eventComparator(startTime, e) | 904 function eventComparator(startTime, e) |
902 { | 905 { |
903 return startTime - e.startTime; | 906 return startTime - e.startTime; |
904 } | 907 } |
905 var index = events.binaryIndexOf(event.startTime, eventComparator); | 908 var index = events.binaryIndexOf(event.startTime, eventComparator); |
| 909 var hasChildren = false; |
906 var aggregatedStats = {}; | 910 var aggregatedStats = {}; |
907 var endTime = event.endTime; | 911 var endTime = event.endTime; |
908 if (!endTime) | 912 if (endTime) { |
909 return aggregatedStats; | 913 for (var i = index; i < events.length; i++) { |
910 for (; index < events.length; index++) { | 914 var nextEvent = events[i]; |
911 var nextEvent = events[index]; | 915 if (nextEvent.startTime >= endTime) |
912 if (nextEvent.startTime > endTime) | 916 break; |
913 break; | 917 if (!nextEvent.selfTime) |
914 if (!nextEvent.selfTime) | 918 continue; |
915 continue; | 919 if (i > index) |
916 var category = WebInspector.TimelineUIUtils.styleForTimelineEvent(nextEv
ent.name).category.name; | 920 hasChildren = true; |
917 aggregatedStats[category] = (aggregatedStats[category] || 0) + nextEvent
.selfTime; | 921 var category = WebInspector.TimelineUIUtils.styleForTimelineEvent(ne
xtEvent.name).category.name; |
| 922 aggregatedStats[category] = (aggregatedStats[category] || 0) + nextE
vent.selfTime / 1000; |
| 923 } |
918 } | 924 } |
919 return aggregatedStats; | 925 return { aggregatedStats: aggregatedStats, hasChildren: hasChildren }; |
920 } | 926 } |
921 | 927 |
922 /** | 928 /** |
923 * @param {!Array.<number>} quad | 929 * @param {!Array.<number>} quad |
924 * @return {number} | 930 * @return {number} |
925 */ | 931 */ |
926 WebInspector.TimelineUIUtils._quadHeight = function(quad) | 932 WebInspector.TimelineUIUtils._quadHeight = function(quad) |
927 { | 933 { |
928 return Math.round(Math.sqrt(Math.pow(quad[0] - quad[6], 2) + Math.pow(quad[1
] - quad[7], 2))); | 934 return Math.round(Math.sqrt(Math.pow(quad[0] - quad[6], 2) + Math.pow(quad[1
] - quad[7], 2))); |
929 } | 935 } |
(...skipping 449 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1379 for (var i = 0; i < stackTrace.length; ++i) { | 1385 for (var i = 0; i < stackTrace.length; ++i) { |
1380 var stackFrame = stackTrace[i]; | 1386 var stackFrame = stackTrace[i]; |
1381 var row = stackTraceElement.createChild("div"); | 1387 var row = stackTraceElement.createChild("div"); |
1382 row.createTextChild(stackFrame.functionName || WebInspector.UIString
("(anonymous function)")); | 1388 row.createTextChild(stackFrame.functionName || WebInspector.UIString
("(anonymous function)")); |
1383 row.createTextChild(" @ "); | 1389 row.createTextChild(" @ "); |
1384 var urlElement = this._linkifier.linkifyLocation(this._target, stack
Frame.url, stackFrame.lineNumber - 1); | 1390 var urlElement = this._linkifier.linkifyLocation(this._target, stack
Frame.url, stackFrame.lineNumber - 1); |
1385 row.appendChild(urlElement); | 1391 row.appendChild(urlElement); |
1386 } | 1392 } |
1387 } | 1393 } |
1388 } | 1394 } |
OLD | NEW |