Chromium Code Reviews| Index: third_party/WebKit/Source/devtools/front_end/timeline/TimelineTreeView.js |
| diff --git a/third_party/WebKit/Source/devtools/front_end/timeline/TimelineTreeView.js b/third_party/WebKit/Source/devtools/front_end/timeline/TimelineTreeView.js |
| index 8027e1aa925af7177710fca1c6046fc32281d898..ccfa0628ce511bbc8f9291ec0bca90622d9cf449 100644 |
| --- a/third_party/WebKit/Source/devtools/front_end/timeline/TimelineTreeView.js |
| +++ b/third_party/WebKit/Source/devtools/front_end/timeline/TimelineTreeView.js |
| @@ -672,7 +672,21 @@ Timeline.AggregatedTimelineTreeView = class extends Timeline.TimelineTreeView { |
| var categories = Timeline.TimelineUIUtils.categories(); |
| var color = node.id ? Timeline.TimelineUIUtils.eventColor(/** @type {!SDK.TracingModel.Event} */ (node.event)) : |
| categories['other'].color; |
| - |
| + var unattributed = Common.UIString('[unattributed]'); |
| + /** |
| + * @param {string} name |
| + * @return {string} |
| + * @this {Timeline.AggregatedTimelineTreeView} |
| + */ |
| + function beautifyDomainName(name) { |
| + if (Timeline.AggregatedTimelineTreeView._isExtensionInternalURL(name)) |
| + name = Common.UIString('[Chrome extensions overhead]'); |
| + else if (Timeline.AggregatedTimelineTreeView._isV8NativeURL(name)) |
| + name = Common.UIString('[V8 Runtime]'); |
| + else if (name.startsWith('chrome-extension')) |
| + name = this._executionContextNamesByOrigin.get(name) || name; |
| + return name; |
| + } |
| switch (this._groupBySetting.get()) { |
| case Timeline.AggregatedTimelineTreeView.GroupBy.Category: |
| var category = categories[node.id] || categories['other']; |
| @@ -680,14 +694,7 @@ Timeline.AggregatedTimelineTreeView = class extends Timeline.TimelineTreeView { |
| case Timeline.AggregatedTimelineTreeView.GroupBy.Domain: |
| case Timeline.AggregatedTimelineTreeView.GroupBy.Subdomain: |
| - var name = node.id; |
| - if (Timeline.AggregatedTimelineTreeView._isExtensionInternalURL(name)) |
| - name = Common.UIString('[Chrome extensions overhead]'); |
| - else if (Timeline.AggregatedTimelineTreeView._isV8NativeURL(name)) |
| - name = Common.UIString('[V8 Runtime]'); |
| - else if (name.startsWith('chrome-extension')) |
| - name = this._executionContextNamesByOrigin.get(name) || name; |
| - return {name: name || Common.UIString('unattributed'), color: color}; |
| + return {name: beautifyDomainName.call(this, node.id) || unattributed, color: color}; |
| case Timeline.AggregatedTimelineTreeView.GroupBy.EventName: |
| var name = node.event.name === TimelineModel.TimelineModel.RecordType.JSFrame ? |
| @@ -701,8 +708,11 @@ Timeline.AggregatedTimelineTreeView = class extends Timeline.TimelineTreeView { |
| }; |
| case Timeline.AggregatedTimelineTreeView.GroupBy.Product: |
| - var name = node.event ? this._productByEvent(node.event) : ''; |
| - return {name: name || Common.UIString('unattributed'), color: Timeline.TimelineUIUtils.colorForId(name)}; |
| + 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.
|
| + color = name ? Timeline.TimelineUIUtils.colorForId(name) : '#eee'; |
| + name = name || this._domainByEvent(true, /** @type {!SDK.TracingModel.Event} */ (node.event)) || ''; |
|
caseq
2017/05/12 00:56:12
var name = productName || ...
alph
2017/05/12 01:08:44
Done.
|
| + name = beautifyDomainName.call(this, name); |
| + return {name: name || unattributed, color: color}; |
| case Timeline.AggregatedTimelineTreeView.GroupBy.URL: |
| break; |
| @@ -715,7 +725,7 @@ Timeline.AggregatedTimelineTreeView = class extends Timeline.TimelineTreeView { |
| default: |
| console.assert(false, 'Unexpected aggregation type'); |
| } |
| - return {name: node.id || Common.UIString('unattributed'), color: color}; |
| + return {name: node.id || unattributed, color: color}; |
| } |
| /** |
| @@ -790,54 +800,23 @@ Timeline.AggregatedTimelineTreeView = class extends Timeline.TimelineTreeView { |
| * @return {?function(!SDK.TracingModel.Event):string} |
| */ |
| _groupingFunction(groupBy) { |
| - /** |
| - * @param {!SDK.TracingModel.Event} event |
| - * @return {string} |
| - */ |
| - function groupByURL(event) { |
| - return TimelineModel.TimelineProfileTree.eventURL(event) || ''; |
| - } |
| - |
| - /** |
| - * @param {boolean} groupSubdomains |
| - * @param {!SDK.TracingModel.Event} event |
| - * @return {string} |
| - */ |
| - function groupByDomain(groupSubdomains, event) { |
| - var url = TimelineModel.TimelineProfileTree.eventURL(event) || ''; |
| - if (Timeline.AggregatedTimelineTreeView._isExtensionInternalURL(url)) |
| - return Timeline.AggregatedTimelineTreeView._extensionInternalPrefix; |
| - if (Timeline.AggregatedTimelineTreeView._isV8NativeURL(url)) |
| - return Timeline.AggregatedTimelineTreeView._v8NativePrefix; |
| - var parsedURL = url.asParsedURL(); |
| - if (!parsedURL) |
| - return ''; |
| - if (parsedURL.scheme === 'chrome-extension') |
| - return parsedURL.scheme + '://' + parsedURL.host; |
| - if (!groupSubdomains) |
| - return parsedURL.host; |
| - if (/^[.0-9]+$/.test(parsedURL.host)) |
| - return parsedURL.host; |
| - var domainMatch = /([^.]*\.)?[^.]*$/.exec(parsedURL.host); |
| - return domainMatch && domainMatch[0] || ''; |
| - } |
| - |
| + var GroupBy = Timeline.AggregatedTimelineTreeView.GroupBy; |
| switch (groupBy) { |
| - case Timeline.AggregatedTimelineTreeView.GroupBy.None: |
| + case GroupBy.None: |
| return null; |
| - case Timeline.AggregatedTimelineTreeView.GroupBy.EventName: |
| + case GroupBy.EventName: |
| return event => Timeline.TimelineUIUtils.eventStyle(event).title; |
| - case Timeline.AggregatedTimelineTreeView.GroupBy.Category: |
| + case GroupBy.Category: |
| return event => Timeline.TimelineUIUtils.eventStyle(event).category.name; |
| - case Timeline.AggregatedTimelineTreeView.GroupBy.Subdomain: |
| - return groupByDomain.bind(null, false); |
| - case Timeline.AggregatedTimelineTreeView.GroupBy.Domain: |
| - return groupByDomain.bind(null, true); |
| - case Timeline.AggregatedTimelineTreeView.GroupBy.Product: |
| - return this._productByEvent.bind(this); |
| - case Timeline.AggregatedTimelineTreeView.GroupBy.URL: |
| - return groupByURL; |
| - case Timeline.AggregatedTimelineTreeView.GroupBy.Frame: |
| + case GroupBy.Subdomain: |
| + return this._domainByEvent.bind(this, false); |
| + case GroupBy.Domain: |
| + return this._domainByEvent.bind(this, true); |
| + case GroupBy.Product: |
| + return event => this._productByEvent(event) || this._domainByEvent(true, event); |
| + case GroupBy.URL: |
| + return event => TimelineModel.TimelineProfileTree.eventURL(event) || ''; |
| + case GroupBy.Frame: |
| return event => TimelineModel.TimelineData.forEvent(event).frameId; |
| default: |
| console.assert(false, `Unexpected aggregation setting: ${groupBy}`); |
| @@ -845,19 +824,42 @@ Timeline.AggregatedTimelineTreeView = class extends Timeline.TimelineTreeView { |
| } |
| } |
| + /** |
| + * @param {boolean} groupSubdomains |
| + * @param {!SDK.TracingModel.Event} event |
| + * @return {string} |
| + */ |
| + _domainByEvent(groupSubdomains, event) { |
| + var url = TimelineModel.TimelineProfileTree.eventURL(event) || ''; |
| + if (Timeline.AggregatedTimelineTreeView._isExtensionInternalURL(url)) |
| + return Timeline.AggregatedTimelineTreeView._extensionInternalPrefix; |
| + if (Timeline.AggregatedTimelineTreeView._isV8NativeURL(url)) |
| + return Timeline.AggregatedTimelineTreeView._v8NativePrefix; |
| + var parsedURL = url.asParsedURL(); |
| + if (!parsedURL) |
| + return ''; |
| + if (parsedURL.scheme === 'chrome-extension') |
| + return parsedURL.scheme + '://' + parsedURL.host; |
| + if (!groupSubdomains) |
| + return parsedURL.host; |
| + if (/^[.0-9]+$/.test(parsedURL.host)) |
| + return parsedURL.host; |
| + var domainMatch = /([^.]*\.)?[^.]*$/.exec(parsedURL.host); |
| + return domainMatch && domainMatch[0] || ''; |
| + } |
| + |
| /** |
| * @param {!SDK.TracingModel.Event} event |
| * @return {string} |
| */ |
| _productByEvent(event) { |
| + var url = TimelineModel.TimelineProfileTree.eventURL(event) || ''; |
|
caseq
2017/05/12 00:56:13
if (!url)
return '';?
alph
2017/05/12 01:08:44
Done.
|
| + if (this._productByURLCache.has(url)) |
| + return this._productByURLCache.get(url); |
| if (!this._productRegistry) |
| return ''; |
| - var url = TimelineModel.TimelineProfileTree.eventURL(event) || ''; |
| - var name = this._productByURLCache.get(url); |
| - if (name) |
| - return name; |
| var parsedURL = url.asParsedURL(); |
| - name = parsedURL && this._productRegistry.nameForUrl(parsedURL) || ''; |
| + var name = parsedURL && this._productRegistry.nameForUrl(parsedURL) || ''; |
| this._productByURLCache.set(url, name); |
| return name; |
| } |