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

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/profiler/ProfileView.js

Issue 2450663004: DevTools: do not allow using 'this' before call into super. (Closed)
Patch Set: rebaselined Created 4 years, 1 month 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 * @implements {WebInspector.Searchable} 7 * @implements {WebInspector.Searchable}
8 * @extends {WebInspector.SimpleView} 8 * @extends {WebInspector.SimpleView}
9 * @param {!WebInspector.ProfileDataGridNode.Formatter} nodeFormatter
10 * @param {!Array<string>=} viewTypes
11 */ 9 */
12 WebInspector.ProfileView = function(nodeFormatter, viewTypes) 10 WebInspector.ProfileView = function()
13 { 11 {
14 WebInspector.SimpleView.call(this, WebInspector.UIString("Profile")); 12 WebInspector.SimpleView.call(this, WebInspector.UIString("Profile"));
15 13
16 this._searchableView = new WebInspector.SearchableView(this); 14 this._searchableView = new WebInspector.SearchableView(this);
17 this._searchableView.setPlaceholder(WebInspector.UIString("Find by cost (>50 ms), name or file")); 15 this._searchableView.setPlaceholder(WebInspector.UIString("Find by cost (>50 ms), name or file"));
18 this._searchableView.show(this.element); 16 this._searchableView.show(this.element);
19 17
20 viewTypes = viewTypes || [
21 WebInspector.ProfileView.ViewTypes.Flame,
22 WebInspector.ProfileView.ViewTypes.Heavy,
23 WebInspector.ProfileView.ViewTypes.Tree
24 ];
25 this._viewType = WebInspector.settings.createSetting("profileView", WebInspe ctor.ProfileView.ViewTypes.Heavy);
26 this._nodeFormatter = nodeFormatter;
27
28 var columns = /** @type {!Array<!WebInspector.DataGrid.ColumnDescriptor>} */ ([]); 18 var columns = /** @type {!Array<!WebInspector.DataGrid.ColumnDescriptor>} */ ([]);
29 columns.push({id: "self", title: this.columnHeader("self"), width: "120px", fixedWidth: true, sortable: true, sort: WebInspector.DataGrid.Order.Descending}) ; 19 columns.push({id: "self", title: this.columnHeader("self"), width: "120px", fixedWidth: true, sortable: true, sort: WebInspector.DataGrid.Order.Descending}) ;
30 columns.push({id: "total", title: this.columnHeader("total"), width: "120px" , fixedWidth: true, sortable: true}); 20 columns.push({id: "total", title: this.columnHeader("total"), width: "120px" , fixedWidth: true, sortable: true});
31 columns.push({id: "function", title: WebInspector.UIString("Function"), disc losure: true, sortable: true}); 21 columns.push({id: "function", title: WebInspector.UIString("Function"), disc losure: true, sortable: true});
32 22
33 this.dataGrid = new WebInspector.DataGrid(columns); 23 this.dataGrid = new WebInspector.DataGrid(columns);
34 this.dataGrid.addEventListener(WebInspector.DataGrid.Events.SortingChanged, this._sortProfile, this); 24 this.dataGrid.addEventListener(WebInspector.DataGrid.Events.SortingChanged, this._sortProfile, this);
35 this.dataGrid.addEventListener(WebInspector.DataGrid.Events.SelectedNode, th is._nodeSelected.bind(this, true)); 25 this.dataGrid.addEventListener(WebInspector.DataGrid.Events.SelectedNode, th is._nodeSelected.bind(this, true));
36 this.dataGrid.addEventListener(WebInspector.DataGrid.Events.DeselectedNode, this._nodeSelected.bind(this, false)); 26 this.dataGrid.addEventListener(WebInspector.DataGrid.Events.DeselectedNode, this._nodeSelected.bind(this, false));
37 27
38 this.viewSelectComboBox = new WebInspector.ToolbarComboBox(this._changeView. bind(this)); 28 this.viewSelectComboBox = new WebInspector.ToolbarComboBox(this._changeView. bind(this));
39 var optionNames = new Map([
40 [WebInspector.ProfileView.ViewTypes.Flame, WebInspector.UIString("Chart" )],
41 [WebInspector.ProfileView.ViewTypes.Heavy, WebInspector.UIString("Heavy (Bottom Up)")],
42 [WebInspector.ProfileView.ViewTypes.Tree, WebInspector.UIString("Tree (T op Down)")],
43 ]);
44 var options = new Map(viewTypes.map(type => [type, this.viewSelectComboBox.c reateOption(optionNames.get(type), "", type)]));
45 var optionName = this._viewType.get() || viewTypes[0];
46 var option = options.get(optionName) || options.get(viewTypes[0]);
47 this.viewSelectComboBox.select(option);
48 29
49 this.focusButton = new WebInspector.ToolbarButton(WebInspector.UIString("Foc us selected function"), "visibility-toolbar-item"); 30 this.focusButton = new WebInspector.ToolbarButton(WebInspector.UIString("Foc us selected function"), "visibility-toolbar-item");
50 this.focusButton.setEnabled(false); 31 this.focusButton.setEnabled(false);
51 this.focusButton.addEventListener("click", this._focusClicked, this); 32 this.focusButton.addEventListener("click", this._focusClicked, this);
52 33
53 this.excludeButton = new WebInspector.ToolbarButton(WebInspector.UIString("E xclude selected function"), "delete-toolbar-item"); 34 this.excludeButton = new WebInspector.ToolbarButton(WebInspector.UIString("E xclude selected function"), "delete-toolbar-item");
54 this.excludeButton.setEnabled(false); 35 this.excludeButton.setEnabled(false);
55 this.excludeButton.addEventListener("click", this._excludeClicked, this); 36 this.excludeButton.addEventListener("click", this._excludeClicked, this);
56 37
57 this.resetButton = new WebInspector.ToolbarButton(WebInspector.UIString("Res tore all functions"), "refresh-toolbar-item"); 38 this.resetButton = new WebInspector.ToolbarButton(WebInspector.UIString("Res tore all functions"), "refresh-toolbar-item");
58 this.resetButton.setEnabled(false); 39 this.resetButton.setEnabled(false);
59 this.resetButton.addEventListener("click", this._resetClicked, this); 40 this.resetButton.addEventListener("click", this._resetClicked, this);
60 41
61 this._linkifier = new WebInspector.Linkifier(new WebInspector.Linkifier.Defa ultFormatter(30)); 42 this._linkifier = new WebInspector.Linkifier(new WebInspector.Linkifier.Defa ultFormatter(30));
62
63 this._changeView();
64 if (this._flameChart)
65 this._flameChart.update();
66 }; 43 };
67 44
68 /** @enum {string} */ 45 /** @enum {string} */
69 WebInspector.ProfileView.ViewTypes = { 46 WebInspector.ProfileView.ViewTypes = {
70 Flame: "Flame", 47 Flame: "Flame",
71 Tree: "Tree", 48 Tree: "Tree",
72 Heavy: "Heavy" 49 Heavy: "Heavy"
73 }; 50 };
74 51
75 /** 52 /**
76 * @param {!Array<!{title: string, value: string}>} entryInfo 53 * @param {!Array<!{title: string, value: string}>} entryInfo
77 * @return {!Element} 54 * @return {!Element}
78 */ 55 */
79 WebInspector.ProfileView.buildPopoverTable = function(entryInfo) 56 WebInspector.ProfileView.buildPopoverTable = function(entryInfo)
80 { 57 {
81 var table = createElement("table"); 58 var table = createElement("table");
82 for (var entry of entryInfo) { 59 for (var entry of entryInfo) {
83 var row = table.createChild("tr"); 60 var row = table.createChild("tr");
84 row.createChild("td").textContent = entry.title; 61 row.createChild("td").textContent = entry.title;
85 row.createChild("td").textContent = entry.value; 62 row.createChild("td").textContent = entry.value;
86 } 63 }
87 return table; 64 return table;
88 }; 65 };
89 66
90 WebInspector.ProfileView.prototype = { 67 WebInspector.ProfileView.prototype = {
68 /**
69 * @param {!WebInspector.ProfileDataGridNode.Formatter} nodeFormatter
70 * @param {!Array<string>=} viewTypes
71 * @protected
72 */
73 initialize: function(nodeFormatter, viewTypes)
74 {
75 this._nodeFormatter = nodeFormatter;
76
77 this._viewType = WebInspector.settings.createSetting("profileView", WebI nspector.ProfileView.ViewTypes.Heavy);
78 viewTypes = viewTypes || [
79 WebInspector.ProfileView.ViewTypes.Flame,
80 WebInspector.ProfileView.ViewTypes.Heavy,
81 WebInspector.ProfileView.ViewTypes.Tree
82 ];
83
84 var optionNames = new Map([
85 [WebInspector.ProfileView.ViewTypes.Flame, WebInspector.UIString("Ch art")],
86 [WebInspector.ProfileView.ViewTypes.Heavy, WebInspector.UIString("He avy (Bottom Up)")],
87 [WebInspector.ProfileView.ViewTypes.Tree, WebInspector.UIString("Tre e (Top Down)")],
88 ]);
89
90 var options = new Map(viewTypes.map(type => [type, this.viewSelectComboB ox.createOption(optionNames.get(type), "", type)]));
91 var optionName = this._viewType.get() || viewTypes[0];
92 var option = options.get(optionName) || options.get(viewTypes[0]);
93 this.viewSelectComboBox.select(option);
94
95 this._changeView();
96 if (this._flameChart)
97 this._flameChart.update();
98 },
99
91 focus: function() 100 focus: function()
92 { 101 {
93 if (this._flameChart) 102 if (this._flameChart)
94 this._flameChart.focus(); 103 this._flameChart.focus();
95 else 104 else
96 WebInspector.Widget.prototype.focus.call(this); 105 WebInspector.Widget.prototype.focus.call(this);
97 }, 106 },
98 107
99 /** 108 /**
100 * @param {string} columnId 109 * @param {string} columnId
(...skipping 498 matching lines...) Expand 10 before | Expand all | Expand 10 after
599 _notifyTempFileReady: function() 608 _notifyTempFileReady: function()
600 { 609 {
601 if (this._onTempFileReady) { 610 if (this._onTempFileReady) {
602 this._onTempFileReady(); 611 this._onTempFileReady();
603 this._onTempFileReady = null; 612 this._onTempFileReady = null;
604 } 613 }
605 }, 614 },
606 615
607 __proto__: WebInspector.ProfileHeader.prototype 616 __proto__: WebInspector.ProfileHeader.prototype
608 }; 617 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698