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

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

Issue 402113002: Draw marker events on Timeline flame chart (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 5 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) 2014 Google Inc. All rights reserved. 2 * Copyright (C) 2014 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
109 /** 109 /**
110 * @param {number} startTime 110 * @param {number} startTime
111 * @param {number} endTime 111 * @param {number} endTime
112 * @return {?Array.<number>} 112 * @return {?Array.<number>}
113 */ 113 */
114 dividerOffsets: function(startTime, endTime) 114 dividerOffsets: function(startTime, endTime)
115 { 115 {
116 return null; 116 return null;
117 }, 117 },
118 118
119 /**
120 * @override
121 * @param {number} index
122 * @return {string}
123 */
124 markerColor: function(index)
125 {
126 var event = this._markerEvents[index];
127 return WebInspector.TracingTimelineUIUtils.markerEventColor(event.name);
128 },
129
130 /**
131 * @override
132 * @param {number} index
133 * @return {string}
134 */
135 markerTitle: function(index)
136 {
137 var event = this._markerEvents[index];
138 return WebInspector.TracingTimelineUIUtils.eventTitle(event, this._model );
139 },
140
119 reset: function() 141 reset: function()
120 { 142 {
121 this._timelineData = null; 143 this._timelineData = null;
122 /** @type {!Array.<!WebInspector.TracingModel.Event>} */ 144 /** @type {!Array.<!WebInspector.TracingModel.Event>} */
123 this._entryEvents = []; 145 this._entryEvents = [];
124 this._entryIndexToTitle = {}; 146 this._entryIndexToTitle = {};
147 this._markerEvents = [];
125 }, 148 },
126 149
127 /** 150 /**
128 * @return {!WebInspector.FlameChart.TimelineData} 151 * @return {!WebInspector.FlameChart.TimelineData}
129 */ 152 */
130 timelineData: function() 153 timelineData: function()
131 { 154 {
132 if (this._timelineData) 155 if (this._timelineData)
133 return this._timelineData; 156 return this._timelineData;
134 157
135 /** 158 this._timelineData = new WebInspector.FlameChart.TimelineData([], [], [] );
136 * @type {?WebInspector.FlameChart.TimelineData}
137 */
138 this._timelineData = {
139 entryLevels: [],
140 entryTotalTimes: [],
141 entryStartTimes: []
142 };
143 159
144 this._minimumBoundary = this._model.minimumRecordTime(); 160 this._minimumBoundary = this._model.minimumRecordTime();
145 this._timeSpan = Math.max(this._model.maximumRecordTime() - this._minimu mBoundary, 1000); 161 this._timeSpan = Math.max(this._model.maximumRecordTime() - this._minimu mBoundary, 1000);
146 this._currentLevel = 0; 162 this._currentLevel = 0;
147 this._appendThreadTimelineData(WebInspector.UIString("Main Thread"), thi s._model.mainThreadEvents()); 163 this._appendThreadTimelineData(WebInspector.UIString("Main Thread"), thi s._model.mainThreadEvents());
148 var threads = this._model.virtualThreads(); 164 var threads = this._model.virtualThreads();
149 for (var threadName in threads) { 165 for (var threadName in threads) {
150 if (threadName !== WebInspector.TimelineModel.MainThreadName) 166 if (threadName !== WebInspector.TimelineModel.MainThreadName)
151 this._appendThreadTimelineData(threadName, threads[threadName]); 167 this._appendThreadTimelineData(threadName, threads[threadName]);
152 } 168 }
153 return this._timelineData; 169 return this._timelineData;
154 }, 170 },
155 171
156 /** 172 /**
157 * @param {string} headerName 173 * @param {string} headerName
158 * @param {!Array.<!WebInspector.TracingModel.Event>} events 174 * @param {!Array.<!WebInspector.TracingModel.Event>} events
159 */ 175 */
160 _appendThreadTimelineData: function(headerName, events) 176 _appendThreadTimelineData: function(headerName, events)
161 { 177 {
162 var maxStackDepth = 0; 178 var maxStackDepth = 0;
163 var openEvents = []; 179 var openEvents = [];
164 var levels = []; 180 var levels = [];
165 var jsHeights = []; 181 var jsHeights = [];
166 var headerAppended = false; 182 var headerAppended = false;
167 var level = 0; 183 var level = 0;
168 var jsStackHeight = 0; 184 var jsStackHeight = 0;
169 for (var i = 0; i < events.length; ++i) { 185 for (var i = 0; i < events.length; ++i) {
170 var e = events[i]; 186 var e = events[i];
171 if (!e.endTime && e.phase !== WebInspector.TracingModel.Phase.Instan t) 187 // FIXME: clean up once phase name is unified between Blink and Chro mium.
188 if (!e.endTime && e.phase !== WebInspector.TracingModel.Phase.Instan t && e.phase !== "I")
172 continue; 189 continue;
190 if (WebInspector.TracingTimelineUIUtils.isMarkerEvent(e)) {
191 this._markerEvents.push(e);
192 this._timelineData.markerTimestamps.push(e.startTime);
193 }
173 if (!this._isVisible(e)) 194 if (!this._isVisible(e))
174 continue; 195 continue;
175 while (openEvents.length && openEvents.peekLast().endTime <= e.start Time) { 196 while (openEvents.length && openEvents.peekLast().endTime <= e.start Time) {
176 openEvents.pop(); 197 openEvents.pop();
177 level = levels.pop(); 198 level = levels.pop();
178 jsStackHeight = jsHeights.pop(); 199 jsStackHeight = jsHeights.pop();
179 } 200 }
180 if (!headerAppended) { 201 if (!headerAppended) {
181 this._appendHeaderRecord(headerName, this._currentLevel); 202 this._appendHeaderRecord(headerName, this._currentLevel);
182 ++level; 203 ++level;
183 headerAppended = true; 204 headerAppended = true;
184 } 205 }
185 var jsHeightDelta = this._processEvent(e, this._currentLevel + level , jsStackHeight); 206 var jsHeightDelta = this._processEvent(e, this._currentLevel + level , jsStackHeight);
207 maxStackDepth = Math.max(maxStackDepth, level + 1 + jsHeightDelta);
186 if (e.endTime) { 208 if (e.endTime) {
187 openEvents.push(e); 209 openEvents.push(e);
188 jsHeights.push(jsStackHeight); 210 jsHeights.push(jsStackHeight);
189 levels.push(level); 211 levels.push(level);
212 level += 1 + jsHeightDelta;
190 } 213 }
191 level += 1 + jsHeightDelta;
192 jsStackHeight += jsHeightDelta; 214 jsStackHeight += jsHeightDelta;
193 maxStackDepth = Math.max(maxStackDepth, level);
194 } 215 }
195 this._currentLevel += maxStackDepth; 216 this._currentLevel += maxStackDepth;
196 }, 217 },
197 218
198 /** 219 /**
199 * @param {!WebInspector.TracingModel.Event} event 220 * @param {!WebInspector.TracingModel.Event} event
200 * @param {number} level 221 * @param {number} level
201 * @param {number} jsStackHeight 222 * @param {number} jsStackHeight
202 * @return {number} 223 * @return {number}
203 */ 224 */
(...skipping 421 matching lines...) Expand 10 before | Expand all | Expand 10 after
625 /** 646 /**
626 * @constructor 647 * @constructor
627 * @param {!WebInspector.TimelineSelection} selection 648 * @param {!WebInspector.TimelineSelection} selection
628 * @param {number} entryIndex 649 * @param {number} entryIndex
629 */ 650 */
630 WebInspector.TimelineFlameChart.Selection = function(selection, entryIndex) 651 WebInspector.TimelineFlameChart.Selection = function(selection, entryIndex)
631 { 652 {
632 this.timelineSelection = selection; 653 this.timelineSelection = selection;
633 this.entryIndex = entryIndex; 654 this.entryIndex = entryIndex;
634 } 655 }
OLDNEW
« no previous file with comments | « Source/devtools/front_end/profiler/CPUProfileFlameChart.js ('k') | Source/devtools/front_end/timeline/TracingTimelineModel.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698