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

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

Issue 306803003: Correctly show self time in trace event details pie chart (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 6 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 720 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698