OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (C) 2008 Apple Inc. All Rights Reserved. | 2 * Copyright (C) 2008 Apple 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 | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
44 columns.push({id: "self", title: WebInspector.UIString("Self"), width: "120p x", sort: WebInspector.DataGrid.Order.Descending, sortable: true}); | 44 columns.push({id: "self", title: WebInspector.UIString("Self"), width: "120p x", sort: WebInspector.DataGrid.Order.Descending, sortable: true}); |
45 columns.push({id: "total", title: WebInspector.UIString("Total"), width: "12 0px", sortable: true}); | 45 columns.push({id: "total", title: WebInspector.UIString("Total"), width: "12 0px", sortable: true}); |
46 columns.push({id: "function", title: WebInspector.UIString("Function"), disc losure: true, sortable: true}); | 46 columns.push({id: "function", title: WebInspector.UIString("Function"), disc losure: true, sortable: true}); |
47 | 47 |
48 this.dataGrid = new WebInspector.DataGrid(columns); | 48 this.dataGrid = new WebInspector.DataGrid(columns); |
49 this.dataGrid.addEventListener(WebInspector.DataGrid.Events.SortingChanged, this._sortProfile, this); | 49 this.dataGrid.addEventListener(WebInspector.DataGrid.Events.SortingChanged, this._sortProfile, this); |
50 | 50 |
51 this.viewSelectComboBox = new WebInspector.StatusBarComboBox(this._changeVie w.bind(this)); | 51 this.viewSelectComboBox = new WebInspector.StatusBarComboBox(this._changeVie w.bind(this)); |
52 | 52 |
53 var options = {}; | 53 var options = {}; |
54 options[WebInspector.CPUProfileView._TypeSunburst] = this.viewSelectComboBox .createOption(WebInspector.UIString("Sunburst"), "", WebInspector.CPUProfileView ._TypeSunburst); | |
54 options[WebInspector.CPUProfileView._TypeFlame] = this.viewSelectComboBox.cr eateOption(WebInspector.UIString("Chart"), "", WebInspector.CPUProfileView._Type Flame); | 55 options[WebInspector.CPUProfileView._TypeFlame] = this.viewSelectComboBox.cr eateOption(WebInspector.UIString("Chart"), "", WebInspector.CPUProfileView._Type Flame); |
55 options[WebInspector.CPUProfileView._TypeHeavy] = this.viewSelectComboBox.cr eateOption(WebInspector.UIString("Heavy (Bottom Up)"), "", WebInspector.CPUProfi leView._TypeHeavy); | 56 options[WebInspector.CPUProfileView._TypeHeavy] = this.viewSelectComboBox.cr eateOption(WebInspector.UIString("Heavy (Bottom Up)"), "", WebInspector.CPUProfi leView._TypeHeavy); |
56 options[WebInspector.CPUProfileView._TypeTree] = this.viewSelectComboBox.cre ateOption(WebInspector.UIString("Tree (Top Down)"), "", WebInspector.CPUProfileV iew._TypeTree); | 57 options[WebInspector.CPUProfileView._TypeTree] = this.viewSelectComboBox.cre ateOption(WebInspector.UIString("Tree (Top Down)"), "", WebInspector.CPUProfileV iew._TypeTree); |
57 | 58 |
58 var optionName = this._viewType.get() || WebInspector.CPUProfileView._TypeFl ame; | 59 var optionName = this._viewType.get() || WebInspector.CPUProfileView._TypeFl ame; |
59 var option = options[optionName] || options[WebInspector.CPUProfileView._Typ eFlame]; | 60 var option = options[optionName] || options[WebInspector.CPUProfileView._Typ eFlame]; |
60 this.viewSelectComboBox.select(option); | 61 this.viewSelectComboBox.select(option); |
61 | 62 |
62 this.focusButton = new WebInspector.StatusBarButton(WebInspector.UIString("F ocus selected function."), "focus-status-bar-item"); | 63 this.focusButton = new WebInspector.StatusBarButton(WebInspector.UIString("F ocus selected function."), "focus-status-bar-item"); |
63 this.focusButton.setEnabled(false); | 64 this.focusButton.setEnabled(false); |
(...skipping 10 matching lines...) Expand all Loading... | |
74 this._profileHeader = profileHeader; | 75 this._profileHeader = profileHeader; |
75 this._linkifier = new WebInspector.Linkifier(new WebInspector.Linkifier.Defa ultFormatter(30)); | 76 this._linkifier = new WebInspector.Linkifier(new WebInspector.Linkifier.Defa ultFormatter(30)); |
76 | 77 |
77 this.profile = new WebInspector.CPUProfileDataModel(profileHeader._profile | | profileHeader.protocolProfile()); | 78 this.profile = new WebInspector.CPUProfileDataModel(profileHeader._profile | | profileHeader.protocolProfile()); |
78 | 79 |
79 this._changeView(); | 80 this._changeView(); |
80 if (this._flameChart) | 81 if (this._flameChart) |
81 this._flameChart.update(); | 82 this._flameChart.update(); |
82 } | 83 } |
83 | 84 |
85 WebInspector.CPUProfileView._TypeSunburst = "Sunburst"; | |
84 WebInspector.CPUProfileView._TypeFlame = "Flame"; | 86 WebInspector.CPUProfileView._TypeFlame = "Flame"; |
85 WebInspector.CPUProfileView._TypeTree = "Tree"; | 87 WebInspector.CPUProfileView._TypeTree = "Tree"; |
86 WebInspector.CPUProfileView._TypeHeavy = "Heavy"; | 88 WebInspector.CPUProfileView._TypeHeavy = "Heavy"; |
87 | 89 |
88 /** | 90 /** |
89 * @interface | 91 * @interface |
90 */ | 92 */ |
91 WebInspector.CPUProfileView.Searchable = function() | 93 WebInspector.CPUProfileView.Searchable = function() |
92 { | 94 { |
93 } | 95 } |
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
262 | 264 |
263 _ensureFlameChartCreated: function() | 265 _ensureFlameChartCreated: function() |
264 { | 266 { |
265 if (this._flameChart) | 267 if (this._flameChart) |
266 return; | 268 return; |
267 this._dataProvider = new WebInspector.CPUFlameChartDataProvider(this.pro file, this._profileHeader.target()); | 269 this._dataProvider = new WebInspector.CPUFlameChartDataProvider(this.pro file, this._profileHeader.target()); |
268 this._flameChart = new WebInspector.CPUProfileFlameChart(this._dataProvi der); | 270 this._flameChart = new WebInspector.CPUProfileFlameChart(this._dataProvi der); |
269 this._flameChart.addEventListener(WebInspector.FlameChart.Events.EntrySe lected, this._onEntrySelected.bind(this)); | 271 this._flameChart.addEventListener(WebInspector.FlameChart.Events.EntrySe lected, this._onEntrySelected.bind(this)); |
270 }, | 272 }, |
271 | 273 |
274 _ensureSunburstChartCreated: function() | |
275 { | |
276 if (this._sunburstChart) | |
277 return; | |
278 // this._sunburstDataProvider = new WebInspector.CPUFlameChartDataProvid er(this.profile, this._profileHeader.target()); | |
279 this._sunburstChart = new WebInspector.CPUProfileSunburstChart(this.prof ile); | |
280 // this._flameChart.addEventListener(WebInspector.FlameChart.Events.Entry Selected, this._onEntrySelected.bind(this)); | |
281 }, | |
282 | |
272 /** | 283 /** |
273 * @param {!WebInspector.Event} event | 284 * @param {!WebInspector.Event} event |
274 */ | 285 */ |
275 _onEntrySelected: function(event) | 286 _onEntrySelected: function(event) |
276 { | 287 { |
277 var entryIndex = event.data; | 288 var entryIndex = event.data; |
278 var node = this._dataProvider._entryNodes[entryIndex]; | 289 var node = this._dataProvider._entryNodes[entryIndex]; |
279 var target = this._profileHeader.target(); | 290 var target = this._profileHeader.target(); |
280 if (!node || !node.scriptId || !target) | 291 if (!node || !node.scriptId || !target) |
281 return; | 292 return; |
282 var script = target.debuggerModel.scriptForId(node.scriptId); | 293 var script = target.debuggerModel.scriptForId(node.scriptId); |
283 if (!script) | 294 if (!script) |
284 return; | 295 return; |
285 var location = /** @type {!WebInspector.DebuggerModel.Location} */ (scri pt.target().debuggerModel.createRawLocation(script, node.lineNumber, 0)); | 296 var location = /** @type {!WebInspector.DebuggerModel.Location} */ (scri pt.target().debuggerModel.createRawLocation(script, node.lineNumber, 0)); |
286 WebInspector.Revealer.reveal(WebInspector.debuggerWorkspaceBinding.rawLo cationToUILocation(location)); | 297 WebInspector.Revealer.reveal(WebInspector.debuggerWorkspaceBinding.rawLo cationToUILocation(location)); |
287 }, | 298 }, |
288 | 299 |
289 _changeView: function() | 300 _changeView: function() |
290 { | 301 { |
291 if (!this.profile) | 302 if (!this.profile) |
292 return; | 303 return; |
293 | 304 |
294 this._searchableView.closeSearch(); | 305 this._searchableView.closeSearch(); |
295 | 306 |
296 if (this._visibleView) | 307 if (this._visibleView) |
297 this._visibleView.detach(); | 308 this._visibleView.detach(); |
298 | 309 |
299 this._viewType.set(this.viewSelectComboBox.selectedOption().value); | 310 this._viewType.set(this.viewSelectComboBox.selectedOption().value); |
300 switch (this._viewType.get()) { | 311 switch (this._viewType.get()) { |
312 case WebInspector.CPUProfileView._TypeSunburst: | |
313 this._ensureSunburstChartCreated(); | |
314 this._visibleView = this._sunburstChart; | |
315 this._searchableElement = this._sunburstChart; | |
316 break; | |
301 case WebInspector.CPUProfileView._TypeFlame: | 317 case WebInspector.CPUProfileView._TypeFlame: |
302 this._ensureFlameChartCreated(); | 318 this._ensureFlameChartCreated(); |
303 this._visibleView = this._flameChart; | 319 this._visibleView = this._flameChart; |
304 this._searchableElement = this._flameChart; | 320 this._searchableElement = this._flameChart; |
305 break; | 321 break; |
306 case WebInspector.CPUProfileView._TypeTree: | 322 case WebInspector.CPUProfileView._TypeTree: |
307 this.profileDataGridTree = this._getTopDownProfileDataGridTree(); | 323 this.profileDataGridTree = this._getTopDownProfileDataGridTree(); |
308 this._sortProfile(); | 324 this._sortProfile(); |
309 this._visibleView = this.dataGrid; | 325 this._visibleView = this.dataGrid; |
310 this._searchableElement = this.profileDataGridTree; | 326 this._searchableElement = this.profileDataGridTree; |
(...skipping 492 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
803 _notifyTempFileReady: function() | 819 _notifyTempFileReady: function() |
804 { | 820 { |
805 if (this._onTempFileReady) { | 821 if (this._onTempFileReady) { |
806 this._onTempFileReady(); | 822 this._onTempFileReady(); |
807 this._onTempFileReady = null; | 823 this._onTempFileReady = null; |
808 } | 824 } |
809 }, | 825 }, |
810 | 826 |
811 __proto__: WebInspector.ProfileHeader.prototype | 827 __proto__: WebInspector.ProfileHeader.prototype |
812 } | 828 } |
829 | |
830 | |
831 /** | |
832 * @constructor | |
833 * @extends {WebInspector.VBox} | |
834 * @param {!WebInspector.CPUProfileDataModel} profile | |
835 */ | |
836 WebInspector.CPUProfileSunburstChart = function(profile) | |
837 { | |
838 WebInspector.VBox.call(this); | |
839 this.element.id = "cpu-sunburst-chart"; | |
840 this._rootNode = this._convertToD3Trace(profile.profileHead); | |
841 | |
842 var iframe = this.element.createChild("iframe", "vbox flex-auto visible"); | |
843 iframe.src = "chrome-devtools://devtools/bundled/profiler/d3js_trace/index.h tml"; | |
844 function onFrameLoad() | |
845 { | |
846 iframe.contentWindow.postMessage(this._rootNode, "*"); | |
847 } | |
848 iframe.onload = onFrameLoad.bind(this); | |
849 } | |
850 | |
851 WebInspector.CPUProfileSunburstChart.prototype = { | |
852 _convertToD3Trace: function(node) | |
853 { | |
854 var result = { | |
855 name: node.functionName, | |
856 size: node.hitCount, | |
857 children: [] | |
858 }; | |
859 for (var i = 0; i < node.children.length; i++) { | |
alph
2015/01/29 14:25:47
nit:
children: node.children.map(this._convertToD3
| |
860 var child = this._convertToD3Trace(node.children[i]); | |
861 // result.size += child.size; | |
862 result.children.push(child); | |
863 } | |
864 return result; | |
865 }, | |
866 | |
867 __proto__: WebInspector.VBox.prototype | |
868 }; | |
OLD | NEW |