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

Unified Diff: Source/devtools/front_end/profiler/CPUProfileView.js

Issue 887673002: DevTools: CPU profiler sunburst view (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | Source/devtools/front_end/profiler/d3js_trace/LICENSE » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/devtools/front_end/profiler/CPUProfileView.js
diff --git a/Source/devtools/front_end/profiler/CPUProfileView.js b/Source/devtools/front_end/profiler/CPUProfileView.js
index be47ced830b5613d442ff1349d2932ea0a71ac75..a291d996c1e1a863740ad0fce80810d6a276282d 100644
--- a/Source/devtools/front_end/profiler/CPUProfileView.js
+++ b/Source/devtools/front_end/profiler/CPUProfileView.js
@@ -51,6 +51,7 @@ WebInspector.CPUProfileView = function(profileHeader)
this.viewSelectComboBox = new WebInspector.StatusBarComboBox(this._changeView.bind(this));
var options = {};
+ options[WebInspector.CPUProfileView._TypeSunburst] = this.viewSelectComboBox.createOption(WebInspector.UIString("Sunburst"), "", WebInspector.CPUProfileView._TypeSunburst);
options[WebInspector.CPUProfileView._TypeFlame] = this.viewSelectComboBox.createOption(WebInspector.UIString("Chart"), "", WebInspector.CPUProfileView._TypeFlame);
options[WebInspector.CPUProfileView._TypeHeavy] = this.viewSelectComboBox.createOption(WebInspector.UIString("Heavy (Bottom Up)"), "", WebInspector.CPUProfileView._TypeHeavy);
options[WebInspector.CPUProfileView._TypeTree] = this.viewSelectComboBox.createOption(WebInspector.UIString("Tree (Top Down)"), "", WebInspector.CPUProfileView._TypeTree);
@@ -81,6 +82,7 @@ WebInspector.CPUProfileView = function(profileHeader)
this._flameChart.update();
}
+WebInspector.CPUProfileView._TypeSunburst = "Sunburst";
WebInspector.CPUProfileView._TypeFlame = "Flame";
WebInspector.CPUProfileView._TypeTree = "Tree";
WebInspector.CPUProfileView._TypeHeavy = "Heavy";
@@ -269,6 +271,15 @@ WebInspector.CPUProfileView.prototype = {
this._flameChart.addEventListener(WebInspector.FlameChart.Events.EntrySelected, this._onEntrySelected.bind(this));
},
+ _ensureSunburstChartCreated: function()
+ {
+ if (this._sunburstChart)
+ return;
+// this._sunburstDataProvider = new WebInspector.CPUFlameChartDataProvider(this.profile, this._profileHeader.target());
+ this._sunburstChart = new WebInspector.CPUProfileSunburstChart(this.profile);
+// this._flameChart.addEventListener(WebInspector.FlameChart.Events.EntrySelected, this._onEntrySelected.bind(this));
+ },
+
/**
* @param {!WebInspector.Event} event
*/
@@ -298,6 +309,11 @@ WebInspector.CPUProfileView.prototype = {
this._viewType.set(this.viewSelectComboBox.selectedOption().value);
switch (this._viewType.get()) {
+ case WebInspector.CPUProfileView._TypeSunburst:
+ this._ensureSunburstChartCreated();
+ this._visibleView = this._sunburstChart;
+ this._searchableElement = this._sunburstChart;
+ break;
case WebInspector.CPUProfileView._TypeFlame:
this._ensureFlameChartCreated();
this._visibleView = this._flameChart;
@@ -810,3 +826,43 @@ WebInspector.CPUProfileHeader.prototype = {
__proto__: WebInspector.ProfileHeader.prototype
}
+
+
+/**
+ * @constructor
+ * @extends {WebInspector.VBox}
+ * @param {!WebInspector.CPUProfileDataModel} profile
+ */
+WebInspector.CPUProfileSunburstChart = function(profile)
+{
+ WebInspector.VBox.call(this);
+ this.element.id = "cpu-sunburst-chart";
+ this._rootNode = this._convertToD3Trace(profile.profileHead);
+
+ var iframe = this.element.createChild("iframe", "vbox flex-auto visible");
+ iframe.src = "chrome-devtools://devtools/bundled/profiler/d3js_trace/index.html";
+ function onFrameLoad()
+ {
+ iframe.contentWindow.postMessage(this._rootNode, "*");
+ }
+ iframe.onload = onFrameLoad.bind(this);
+}
+
+WebInspector.CPUProfileSunburstChart.prototype = {
+ _convertToD3Trace: function(node)
+ {
+ var result = {
+ name: node.functionName,
+ size: node.hitCount,
+ children: []
+ };
+ for (var i = 0; i < node.children.length; i++) {
+ var child = this._convertToD3Trace(node.children[i]);
+ result.size += child.size;
+ result.children.push(child);
+ }
+ return result;
+ },
+
+ __proto__: WebInspector.VBox.prototype
+};
« no previous file with comments | « no previous file | Source/devtools/front_end/profiler/d3js_trace/LICENSE » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698