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

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

Issue 310313003: Introduce TracingTimelineModel (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
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 651 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698