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

Side by Side Diff: Source/devtools/front_end/TimelinePowerOverview.js

Issue 220963002: DevTools: Add energy value under Timeline pie chart (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 8 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * @constructor 6 * @constructor
7 * @extends {WebInspector.Object} 7 * @extends {WebInspector.Object}
8 */ 8 */
9 WebInspector.TimelinePowerOverviewDataProvider = function() 9 WebInspector.TimelinePowerOverviewDataProvider = function()
10 { 10 {
11 this._records = []; 11 this._records = [];
12 this._energies = [];
13 this._times = [];
12 if (Capabilities.canProfilePower) 14 if (Capabilities.canProfilePower)
13 WebInspector.powerProfiler.addEventListener(WebInspector.PowerProfiler.E ventTypes.PowerEventRecorded, this._onRecordAdded, this); 15 WebInspector.powerProfiler.addEventListener(WebInspector.PowerProfiler.E ventTypes.PowerEventRecorded, this._onRecordAdded, this);
14 } 16 }
15 17
16 WebInspector.TimelinePowerOverviewDataProvider.prototype = { 18 WebInspector.TimelinePowerOverviewDataProvider.prototype = {
17 /** 19 /**
18 * @return {!Array.<!PowerAgent.PowerEvent>} 20 * @return {!Array.<!PowerAgent.PowerEvent>}
19 */ 21 */
20 records : function() 22 records : function()
21 { 23 {
22 // The last record is not used, as its "value" is not set. 24 // The last record is not used, as its "value" is not set.
23 return this._records.slice(0, this._records.length - 1); 25 return this._records.slice(0, this._records.length - 1);
24 }, 26 },
25 27
28 /**
29 * @param {number} minTime
30 * @param {number} maxTime
alph 2014/04/10 15:38:55 nit: @return
31 */
32 _calculateEnergy : function(minTime, maxTime)
33 {
34 var times = this._times;
35 var energies = this._energies;
36 var recordNumber = times.length;
alph 2014/04/10 15:38:55 nit: replace recordNumber with: var last = times.l
37
38 if (recordNumber < 2 || minTime >= times[recordNumber - 1] || maxTime <= times[0])
39 return 0;
40
41 // Maximum index of element whose time <= minTime.
42 var start = Number.constrain(times.upperBound(minTime) - 1, 0, recordNum ber - 1);
43
44 // Minimum index of element whose time >= maxTime.
45 var end = Number.constrain(times.lowerBound(maxTime), 0, recordNumber - 1);
46
47 var startTime = minTime < times[0] ? times[0] : minTime;
48 var endTime = maxTime > times[recordNumber - 1] ? times[recordNumber - 1 ] : maxTime;
49
50 if (start + 1 === end)
51 return (endTime - startTime) / (times[end] - times[start]) * (energie s[end] - energies[start]) / 1000;
52
53 var totalEnergy = 0;
54 totalEnergy += energies[end - 1] - energies[start + 1];
55 totalEnergy += (times[start + 1] - startTime) / (times[start + 1] - time s[start]) * (energies[start + 1] - energies[start]);
56 totalEnergy += (endTime - times[end - 1]) / (times[end] - times[end - 1] ) * (energies[end] - energies[end - 1]);
57 return totalEnergy / 1000;
58 },
59
26 _onRecordAdded: function(event) 60 _onRecordAdded: function(event)
27 { 61 {
28 // "value" of original PowerEvent means the average power between previo us sampling to current one. 62 // "value" of original PowerEvent means the average power between previo us sampling to current one.
29 // Here, it is converted to average power between current sampling to ne xt one. 63 // Here, it is converted to average power between current sampling to ne xt one.
30 var record = event.data; 64 var record = event.data;
65 var curTime = record.timestamp;
31 var length = this._records.length; 66 var length = this._records.length;
32 if (length) 67 var accumulatedEnergy = 0;
68 if (length) {
33 this._records[length - 1].value = record.value; 69 this._records[length - 1].value = record.value;
70
71 var prevTime = this._records[length - 1].timestamp;
72 accumulatedEnergy = this._energies[length - 1];
73 accumulatedEnergy += (curTime - prevTime) * record.value;
74 }
75 this._energies.push(accumulatedEnergy);
34 this._records.push(record); 76 this._records.push(record);
77 this._times.push(curTime);
35 }, 78 },
36 79
37 __proto__: WebInspector.Object.prototype 80 __proto__: WebInspector.Object.prototype
38 } 81 }
39 82
40 /** 83 /**
41 * @constructor 84 * @constructor
42 * @extends {WebInspector.TimelineOverviewBase} 85 * @extends {WebInspector.TimelineOverviewBase}
43 * @param {!WebInspector.TimelineModel} model 86 * @param {!WebInspector.TimelineModel} model
44 */ 87 */
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
138 181
139 ctx.fillStyle = "rgba(255,192,0, 0.8);"; 182 ctx.fillStyle = "rgba(255,192,0, 0.8);";
140 ctx.fill(); 183 ctx.fill();
141 184
142 ctx.lineWidth = 0.5; 185 ctx.lineWidth = 0.5;
143 ctx.strokeStyle = "rgba(20,0,0,0.8)"; 186 ctx.strokeStyle = "rgba(20,0,0,0.8)";
144 ctx.stroke(); 187 ctx.stroke();
145 ctx.restore(); 188 ctx.restore();
146 189
147 this._maxPowerLabel.textContent = WebInspector.UIString("%.2f\u2009watts ", maxPower); 190 this._maxPowerLabel.textContent = WebInspector.UIString("%.2f\u2009watts ", maxPower);
148 this._minPowerLabel.textContent = WebInspector.UIString("%.2f\u2009watts ", minPower);; 191 this._minPowerLabel.textContent = WebInspector.UIString("%.2f\u2009watts ", minPower);
192 },
193
194 /**
195 * @param {number} minTime
196 * @param {number} maxTime
alph 2014/04/10 15:38:55 nit: @return
197 */
198 calculateEnergy: function(minTime, maxTime)
199 {
200 return this._dataProvider._calculateEnergy(minTime, maxTime);
149 }, 201 },
150 202
151 __proto__: WebInspector.TimelineOverviewBase.prototype 203 __proto__: WebInspector.TimelineOverviewBase.prototype
152 } 204 }
153 205
154 206
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698