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

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/timeline/TimelineTreeView.js

Issue 2874233003: DevTools: move group by product out of experiment (Closed)
Patch Set: fix test Created 3 years, 7 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
« no previous file with comments | « third_party/WebKit/Source/devtools/front_end/main/Main.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 * @unrestricted 6 * @unrestricted
7 * @implements {UI.Searchable} 7 * @implements {UI.Searchable}
8 */ 8 */
9 Timeline.TimelineTreeView = class extends UI.VBox { 9 Timeline.TimelineTreeView = class extends UI.VBox {
10 constructor() { 10 constructor() {
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
231 gridNode.reveal(); 231 gridNode.reveal();
232 gridNode.select(suppressSelectedEvent); 232 gridNode.select(suppressSelectedEvent);
233 } 233 }
234 } 234 }
235 235
236 /** 236 /**
237 * @protected 237 * @protected
238 */ 238 */
239 refreshTree() { 239 refreshTree() {
240 this._linkifier.reset(); 240 this._linkifier.reset();
241 if (this._searchableView)
242 this._searchableView.cancelSearch();
243 this._dataGrid.rootNode().removeChildren(); 241 this._dataGrid.rootNode().removeChildren();
244 if (!this._model) { 242 if (!this._model) {
245 this._updateDetailsForSelection(); 243 this._updateDetailsForSelection();
246 return; 244 return;
247 } 245 }
248 this._root = this._buildTree(); 246 this._root = this._buildTree();
249 var children = this._root.children(); 247 var children = this._root.children();
250 var maxSelfTime = 0; 248 var maxSelfTime = 0;
251 var maxTotalTime = 0; 249 var maxTotalTime = 0;
252 var totalUsedTime = this._root.totalTime - this._root.selfTime; 250 var totalUsedTime = this._root.totalTime - this._root.selfTime;
253 for (var child of children.values()) { 251 for (var child of children.values()) {
254 maxSelfTime = Math.max(maxSelfTime, child.selfTime); 252 maxSelfTime = Math.max(maxSelfTime, child.selfTime);
255 maxTotalTime = Math.max(maxTotalTime, child.totalTime); 253 maxTotalTime = Math.max(maxTotalTime, child.totalTime);
256 } 254 }
257 for (var child of children.values()) { 255 for (var child of children.values()) {
258 // Exclude the idle time off the total calculation. 256 // Exclude the idle time off the total calculation.
259 var gridNode = new Timeline.TimelineTreeView.TreeGridNode(child, totalUsed Time, maxSelfTime, maxTotalTime, this); 257 var gridNode = new Timeline.TimelineTreeView.TreeGridNode(child, totalUsed Time, maxSelfTime, maxTotalTime, this);
260 this._dataGrid.insertChild(gridNode); 258 this._dataGrid.insertChild(gridNode);
261 } 259 }
262 this._sortingChanged(); 260 this._sortingChanged();
263 this._updateDetailsForSelection(); 261 this._updateDetailsForSelection();
262 if (this._searchableView)
263 this._searchableView.refreshSearch();
264 } 264 }
265 265
266 /** 266 /**
267 * @return {!TimelineModel.TimelineProfileTree.Node} 267 * @return {!TimelineModel.TimelineProfileTree.Node}
268 */ 268 */
269 _buildTree() { 269 _buildTree() {
270 throw new Error('Not Implemented'); 270 throw new Error('Not Implemented');
271 } 271 }
272 272
273 /** 273 /**
(...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after
629 */ 629 */
630 constructor(filters) { 630 constructor(filters) {
631 super(); 631 super();
632 this._groupBySetting = 632 this._groupBySetting =
633 Common.settings.createSetting('timelineTreeGroupBy', Timeline.Aggregated TimelineTreeView.GroupBy.None); 633 Common.settings.createSetting('timelineTreeGroupBy', Timeline.Aggregated TimelineTreeView.GroupBy.None);
634 this._groupBySetting.addChangeListener(this.refreshTree.bind(this)); 634 this._groupBySetting.addChangeListener(this.refreshTree.bind(this));
635 this.init(filters); 635 this.init(filters);
636 this._stackView = new Timeline.TimelineStackView(this); 636 this._stackView = new Timeline.TimelineStackView(this);
637 this._stackView.addEventListener( 637 this._stackView.addEventListener(
638 Timeline.TimelineStackView.Events.SelectionChanged, this._onStackViewSel ectionChanged, this); 638 Timeline.TimelineStackView.Events.SelectionChanged, this._onStackViewSel ectionChanged, this);
639 if (!Runtime.experiments.isEnabled('timelineColorByProduct'))
640 return;
641 /** @type {!Map<string, string>} */ 639 /** @type {!Map<string, string>} */
642 this._productByURLCache = new Map(); 640 this._productByURLCache = new Map();
643 ProductRegistry.instance().then(registry => { 641 ProductRegistry.instance().then(registry => {
644 this._productRegistry = registry; 642 this._productRegistry = registry;
645 this.refreshTree(); 643 this.refreshTree();
646 }); 644 });
647 } 645 }
648 646
649 /** 647 /**
650 * @override 648 * @override
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
745 var options = [ 743 var options = [
746 {label: Common.UIString('No Grouping'), value: groupBy.None}, 744 {label: Common.UIString('No Grouping'), value: groupBy.None},
747 {label: Common.UIString('Group by Activity'), value: groupBy.EventName}, 745 {label: Common.UIString('Group by Activity'), value: groupBy.EventName},
748 {label: Common.UIString('Group by Category'), value: groupBy.Category}, 746 {label: Common.UIString('Group by Category'), value: groupBy.Category},
749 {label: Common.UIString('Group by Domain'), value: groupBy.Domain}, 747 {label: Common.UIString('Group by Domain'), value: groupBy.Domain},
750 {label: Common.UIString('Group by Frame'), value: groupBy.Frame}, 748 {label: Common.UIString('Group by Frame'), value: groupBy.Frame},
751 {label: Common.UIString('Group by Product'), value: groupBy.Product}, 749 {label: Common.UIString('Group by Product'), value: groupBy.Product},
752 {label: Common.UIString('Group by Subdomain'), value: groupBy.Subdomain}, 750 {label: Common.UIString('Group by Subdomain'), value: groupBy.Subdomain},
753 {label: Common.UIString('Group by URL'), value: groupBy.URL}, 751 {label: Common.UIString('Group by URL'), value: groupBy.URL},
754 ]; 752 ];
755 if (!Runtime.experiments.isEnabled('timelineColorByProduct'))
756 options = options.filter(option => option.value !== groupBy.Product);
757 toolbar.appendToolbarItem(new UI.ToolbarSettingComboBox(options, this._group BySetting)); 753 toolbar.appendToolbarItem(new UI.ToolbarSettingComboBox(options, this._group BySetting));
758 toolbar.appendSpacer(); 754 toolbar.appendSpacer();
759 toolbar.appendToolbarItem(this._splitWidget.createShowHideSidebarButton(Comm on.UIString('heaviest stack'))); 755 toolbar.appendToolbarItem(this._splitWidget.createShowHideSidebarButton(Comm on.UIString('heaviest stack')));
760 } 756 }
761 757
762 /** 758 /**
763 * @param {!TimelineModel.TimelineProfileTree.Node} treeNode 759 * @param {!TimelineModel.TimelineProfileTree.Node} treeNode
764 * @return {!Array<!TimelineModel.TimelineProfileTree.Node>} 760 * @return {!Array<!TimelineModel.TimelineProfileTree.Node>}
765 */ 761 */
766 _buildHeaviestStack(treeNode) { 762 _buildHeaviestStack(treeNode) {
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
856 var domainMatch = /([^.]*\.)?[^.]*$/.exec(parsedURL.host); 852 var domainMatch = /([^.]*\.)?[^.]*$/.exec(parsedURL.host);
857 return domainMatch && domainMatch[0] || ''; 853 return domainMatch && domainMatch[0] || '';
858 } 854 }
859 855
860 /** 856 /**
861 * @param {!SDK.TracingModel.Event} event 857 * @param {!SDK.TracingModel.Event} event
862 * @return {string} 858 * @return {string}
863 */ 859 */
864 _productByEvent(event) { 860 _productByEvent(event) {
865 var url = TimelineModel.TimelineProfileTree.eventURL(event); 861 var url = TimelineModel.TimelineProfileTree.eventURL(event);
866 if (!url || !this._productByURLCache) 862 if (!url)
867 return ''; 863 return '';
868 if (this._productByURLCache.has(url)) 864 if (this._productByURLCache.has(url))
869 return this._productByURLCache.get(url); 865 return this._productByURLCache.get(url);
870 if (!this._productRegistry) 866 if (!this._productRegistry)
871 return ''; 867 return '';
872 var parsedURL = url.asParsedURL(); 868 var parsedURL = url.asParsedURL();
873 var name = parsedURL && this._productRegistry.nameForUrl(parsedURL) || ''; 869 var name = parsedURL && this._productRegistry.nameForUrl(parsedURL) || '';
874 this._productByURLCache.set(url, name); 870 this._productByURLCache.set(url, name);
875 return name; 871 return name;
876 } 872 }
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
1017 1013
1018 _onSelectionChanged() { 1014 _onSelectionChanged() {
1019 this.dispatchEventToListeners(Timeline.TimelineStackView.Events.SelectionCha nged); 1015 this.dispatchEventToListeners(Timeline.TimelineStackView.Events.SelectionCha nged);
1020 } 1016 }
1021 }; 1017 };
1022 1018
1023 /** @enum {symbol} */ 1019 /** @enum {symbol} */
1024 Timeline.TimelineStackView.Events = { 1020 Timeline.TimelineStackView.Events = {
1025 SelectionChanged: Symbol('SelectionChanged') 1021 SelectionChanged: Symbol('SelectionChanged')
1026 }; 1022 };
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/devtools/front_end/main/Main.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698