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

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

Issue 2874273003: DevTools: Tweak Group by Product (Closed)
Patch Set: 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/LayoutTests/inspector/tracing/timeline-misc/timeline-aggregated-details-expected.txt ('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 654 matching lines...) Expand 10 before | Expand all | Expand 10 after
665 } 665 }
666 666
667 /** 667 /**
668 * @param {!TimelineModel.TimelineProfileTree.Node} node 668 * @param {!TimelineModel.TimelineProfileTree.Node} node
669 * @return {!{name: string, color: string}} 669 * @return {!{name: string, color: string}}
670 */ 670 */
671 _displayInfoForGroupNode(node) { 671 _displayInfoForGroupNode(node) {
672 var categories = Timeline.TimelineUIUtils.categories(); 672 var categories = Timeline.TimelineUIUtils.categories();
673 var color = node.id ? Timeline.TimelineUIUtils.eventColor(/** @type {!SDK.Tr acingModel.Event} */ (node.event)) : 673 var color = node.id ? Timeline.TimelineUIUtils.eventColor(/** @type {!SDK.Tr acingModel.Event} */ (node.event)) :
674 categories['other'].color; 674 categories['other'].color;
675 675 var unattributed = Common.UIString('[unattributed]');
676 /**
677 * @param {string} name
678 * @return {string}
679 * @this {Timeline.AggregatedTimelineTreeView}
680 */
681 function beautifyDomainName(name) {
682 if (Timeline.AggregatedTimelineTreeView._isExtensionInternalURL(name))
683 name = Common.UIString('[Chrome extensions overhead]');
684 else if (Timeline.AggregatedTimelineTreeView._isV8NativeURL(name))
685 name = Common.UIString('[V8 Runtime]');
686 else if (name.startsWith('chrome-extension'))
687 name = this._executionContextNamesByOrigin.get(name) || name;
688 return name;
689 }
676 switch (this._groupBySetting.get()) { 690 switch (this._groupBySetting.get()) {
677 case Timeline.AggregatedTimelineTreeView.GroupBy.Category: 691 case Timeline.AggregatedTimelineTreeView.GroupBy.Category:
678 var category = categories[node.id] || categories['other']; 692 var category = categories[node.id] || categories['other'];
679 return {name: category.title, color: category.color}; 693 return {name: category.title, color: category.color};
680 694
681 case Timeline.AggregatedTimelineTreeView.GroupBy.Domain: 695 case Timeline.AggregatedTimelineTreeView.GroupBy.Domain:
682 case Timeline.AggregatedTimelineTreeView.GroupBy.Subdomain: 696 case Timeline.AggregatedTimelineTreeView.GroupBy.Subdomain:
683 var name = node.id; 697 return {name: beautifyDomainName.call(this, node.id) || unattributed, co lor: color};
684 if (Timeline.AggregatedTimelineTreeView._isExtensionInternalURL(name))
685 name = Common.UIString('[Chrome extensions overhead]');
686 else if (Timeline.AggregatedTimelineTreeView._isV8NativeURL(name))
687 name = Common.UIString('[V8 Runtime]');
688 else if (name.startsWith('chrome-extension'))
689 name = this._executionContextNamesByOrigin.get(name) || name;
690 return {name: name || Common.UIString('unattributed'), color: color};
691 698
692 case Timeline.AggregatedTimelineTreeView.GroupBy.EventName: 699 case Timeline.AggregatedTimelineTreeView.GroupBy.EventName:
693 var name = node.event.name === TimelineModel.TimelineModel.RecordType.JS Frame ? 700 var name = node.event.name === TimelineModel.TimelineModel.RecordType.JS Frame ?
694 Common.UIString('JavaScript') : 701 Common.UIString('JavaScript') :
695 Timeline.TimelineUIUtils.eventTitle(node.event); 702 Timeline.TimelineUIUtils.eventTitle(node.event);
696 return { 703 return {
697 name: name, 704 name: name,
698 color: node.event.name === TimelineModel.TimelineModel.RecordType.JSFr ame ? 705 color: node.event.name === TimelineModel.TimelineModel.RecordType.JSFr ame ?
699 Timeline.TimelineUIUtils.eventStyle(node.event).category.color : 706 Timeline.TimelineUIUtils.eventStyle(node.event).category.color :
700 color 707 color
701 }; 708 };
702 709
703 case Timeline.AggregatedTimelineTreeView.GroupBy.Product: 710 case Timeline.AggregatedTimelineTreeView.GroupBy.Product:
704 var name = node.event ? this._productByEvent(node.event) : ''; 711 var name = this._productByEvent(/** @type {!SDK.TracingModel.Event} */ ( node.event));
caseq 2017/05/12 00:56:13 var productName = ...
alph 2017/05/12 01:08:44 Done.
705 return {name: name || Common.UIString('unattributed'), color: Timeline.T imelineUIUtils.colorForId(name)}; 712 color = name ? Timeline.TimelineUIUtils.colorForId(name) : '#eee';
713 name = name || this._domainByEvent(true, /** @type {!SDK.TracingModel.Ev ent} */ (node.event)) || '';
caseq 2017/05/12 00:56:12 var name = productName || ...
alph 2017/05/12 01:08:44 Done.
714 name = beautifyDomainName.call(this, name);
715 return {name: name || unattributed, color: color};
706 716
707 case Timeline.AggregatedTimelineTreeView.GroupBy.URL: 717 case Timeline.AggregatedTimelineTreeView.GroupBy.URL:
708 break; 718 break;
709 719
710 case Timeline.AggregatedTimelineTreeView.GroupBy.Frame: 720 case Timeline.AggregatedTimelineTreeView.GroupBy.Frame:
711 var frame = this._model.timelineModel().pageFrameById(node.id); 721 var frame = this._model.timelineModel().pageFrameById(node.id);
712 var frameName = frame ? Timeline.TimelineUIUtils.displayNameForFrame(fra me, 80) : Common.UIString('Page'); 722 var frameName = frame ? Timeline.TimelineUIUtils.displayNameForFrame(fra me, 80) : Common.UIString('Page');
713 return {name: frameName, color: color}; 723 return {name: frameName, color: color};
714 724
715 default: 725 default:
716 console.assert(false, 'Unexpected aggregation type'); 726 console.assert(false, 'Unexpected aggregation type');
717 } 727 }
718 return {name: node.id || Common.UIString('unattributed'), color: color}; 728 return {name: node.id || unattributed, color: color};
719 } 729 }
720 730
721 /** 731 /**
722 * @override 732 * @override
723 * @param {!UI.Toolbar} toolbar 733 * @param {!UI.Toolbar} toolbar
724 */ 734 */
725 populateToolbar(toolbar) { 735 populateToolbar(toolbar) {
726 super.populateToolbar(toolbar); 736 super.populateToolbar(toolbar);
727 var groupBy = Timeline.AggregatedTimelineTreeView.GroupBy; 737 var groupBy = Timeline.AggregatedTimelineTreeView.GroupBy;
728 var options = [ 738 var options = [
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
783 this._stackView.setStack(stack, node); 793 this._stackView.setStack(stack, node);
784 this._stackView.show(this._detailsView.element); 794 this._stackView.show(this._detailsView.element);
785 return true; 795 return true;
786 } 796 }
787 797
788 /** 798 /**
789 * @param {!Timeline.AggregatedTimelineTreeView.GroupBy} groupBy 799 * @param {!Timeline.AggregatedTimelineTreeView.GroupBy} groupBy
790 * @return {?function(!SDK.TracingModel.Event):string} 800 * @return {?function(!SDK.TracingModel.Event):string}
791 */ 801 */
792 _groupingFunction(groupBy) { 802 _groupingFunction(groupBy) {
793 /** 803 var GroupBy = Timeline.AggregatedTimelineTreeView.GroupBy;
794 * @param {!SDK.TracingModel.Event} event
795 * @return {string}
796 */
797 function groupByURL(event) {
798 return TimelineModel.TimelineProfileTree.eventURL(event) || '';
799 }
800
801 /**
802 * @param {boolean} groupSubdomains
803 * @param {!SDK.TracingModel.Event} event
804 * @return {string}
805 */
806 function groupByDomain(groupSubdomains, event) {
807 var url = TimelineModel.TimelineProfileTree.eventURL(event) || '';
808 if (Timeline.AggregatedTimelineTreeView._isExtensionInternalURL(url))
809 return Timeline.AggregatedTimelineTreeView._extensionInternalPrefix;
810 if (Timeline.AggregatedTimelineTreeView._isV8NativeURL(url))
811 return Timeline.AggregatedTimelineTreeView._v8NativePrefix;
812 var parsedURL = url.asParsedURL();
813 if (!parsedURL)
814 return '';
815 if (parsedURL.scheme === 'chrome-extension')
816 return parsedURL.scheme + '://' + parsedURL.host;
817 if (!groupSubdomains)
818 return parsedURL.host;
819 if (/^[.0-9]+$/.test(parsedURL.host))
820 return parsedURL.host;
821 var domainMatch = /([^.]*\.)?[^.]*$/.exec(parsedURL.host);
822 return domainMatch && domainMatch[0] || '';
823 }
824
825 switch (groupBy) { 804 switch (groupBy) {
826 case Timeline.AggregatedTimelineTreeView.GroupBy.None: 805 case GroupBy.None:
827 return null; 806 return null;
828 case Timeline.AggregatedTimelineTreeView.GroupBy.EventName: 807 case GroupBy.EventName:
829 return event => Timeline.TimelineUIUtils.eventStyle(event).title; 808 return event => Timeline.TimelineUIUtils.eventStyle(event).title;
830 case Timeline.AggregatedTimelineTreeView.GroupBy.Category: 809 case GroupBy.Category:
831 return event => Timeline.TimelineUIUtils.eventStyle(event).category.name ; 810 return event => Timeline.TimelineUIUtils.eventStyle(event).category.name ;
832 case Timeline.AggregatedTimelineTreeView.GroupBy.Subdomain: 811 case GroupBy.Subdomain:
833 return groupByDomain.bind(null, false); 812 return this._domainByEvent.bind(this, false);
834 case Timeline.AggregatedTimelineTreeView.GroupBy.Domain: 813 case GroupBy.Domain:
835 return groupByDomain.bind(null, true); 814 return this._domainByEvent.bind(this, true);
836 case Timeline.AggregatedTimelineTreeView.GroupBy.Product: 815 case GroupBy.Product:
837 return this._productByEvent.bind(this); 816 return event => this._productByEvent(event) || this._domainByEvent(true, event);
838 case Timeline.AggregatedTimelineTreeView.GroupBy.URL: 817 case GroupBy.URL:
839 return groupByURL; 818 return event => TimelineModel.TimelineProfileTree.eventURL(event) || '';
840 case Timeline.AggregatedTimelineTreeView.GroupBy.Frame: 819 case GroupBy.Frame:
841 return event => TimelineModel.TimelineData.forEvent(event).frameId; 820 return event => TimelineModel.TimelineData.forEvent(event).frameId;
842 default: 821 default:
843 console.assert(false, `Unexpected aggregation setting: ${groupBy}`); 822 console.assert(false, `Unexpected aggregation setting: ${groupBy}`);
844 return null; 823 return null;
845 } 824 }
846 } 825 }
847 826
848 /** 827 /**
828 * @param {boolean} groupSubdomains
829 * @param {!SDK.TracingModel.Event} event
830 * @return {string}
831 */
832 _domainByEvent(groupSubdomains, event) {
833 var url = TimelineModel.TimelineProfileTree.eventURL(event) || '';
834 if (Timeline.AggregatedTimelineTreeView._isExtensionInternalURL(url))
835 return Timeline.AggregatedTimelineTreeView._extensionInternalPrefix;
836 if (Timeline.AggregatedTimelineTreeView._isV8NativeURL(url))
837 return Timeline.AggregatedTimelineTreeView._v8NativePrefix;
838 var parsedURL = url.asParsedURL();
839 if (!parsedURL)
840 return '';
841 if (parsedURL.scheme === 'chrome-extension')
842 return parsedURL.scheme + '://' + parsedURL.host;
843 if (!groupSubdomains)
844 return parsedURL.host;
845 if (/^[.0-9]+$/.test(parsedURL.host))
846 return parsedURL.host;
847 var domainMatch = /([^.]*\.)?[^.]*$/.exec(parsedURL.host);
848 return domainMatch && domainMatch[0] || '';
849 }
850
851 /**
849 * @param {!SDK.TracingModel.Event} event 852 * @param {!SDK.TracingModel.Event} event
850 * @return {string} 853 * @return {string}
851 */ 854 */
852 _productByEvent(event) { 855 _productByEvent(event) {
856 var url = TimelineModel.TimelineProfileTree.eventURL(event) || '';
caseq 2017/05/12 00:56:13 if (!url) return '';?
alph 2017/05/12 01:08:44 Done.
857 if (this._productByURLCache.has(url))
858 return this._productByURLCache.get(url);
853 if (!this._productRegistry) 859 if (!this._productRegistry)
854 return ''; 860 return '';
855 var url = TimelineModel.TimelineProfileTree.eventURL(event) || '';
856 var name = this._productByURLCache.get(url);
857 if (name)
858 return name;
859 var parsedURL = url.asParsedURL(); 861 var parsedURL = url.asParsedURL();
860 name = parsedURL && this._productRegistry.nameForUrl(parsedURL) || ''; 862 var name = parsedURL && this._productRegistry.nameForUrl(parsedURL) || '';
861 this._productByURLCache.set(url, name); 863 this._productByURLCache.set(url, name);
862 return name; 864 return name;
863 } 865 }
864 866
865 /** 867 /**
866 * @override 868 * @override
867 * @param {!UI.ContextMenu} contextMenu 869 * @param {!UI.ContextMenu} contextMenu
868 * @param {!TimelineModel.TimelineProfileTree.Node} node 870 * @param {!TimelineModel.TimelineProfileTree.Node} node
869 */ 871 */
870 _appendContextMenuItems(contextMenu, node) { 872 _appendContextMenuItems(contextMenu, node) {
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
1004 1006
1005 _onSelectionChanged() { 1007 _onSelectionChanged() {
1006 this.dispatchEventToListeners(Timeline.TimelineStackView.Events.SelectionCha nged); 1008 this.dispatchEventToListeners(Timeline.TimelineStackView.Events.SelectionCha nged);
1007 } 1009 }
1008 }; 1010 };
1009 1011
1010 /** @enum {symbol} */ 1012 /** @enum {symbol} */
1011 Timeline.TimelineStackView.Events = { 1013 Timeline.TimelineStackView.Events = {
1012 SelectionChanged: Symbol('SelectionChanged') 1014 SelectionChanged: Symbol('SelectionChanged')
1013 }; 1015 };
OLDNEW
« no previous file with comments | « third_party/WebKit/LayoutTests/inspector/tracing/timeline-misc/timeline-aggregated-details-expected.txt ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698