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

Unified Diff: third_party/WebKit/Source/devtools/front_end/timeline/TimelineFlameChartView.js

Issue 2882343002: DevTools: Make flamechart coloring depend on group by selector. (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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | third_party/WebKit/Source/devtools/front_end/timeline/TimelinePanel.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/devtools/front_end/timeline/TimelineFlameChartView.js
diff --git a/third_party/WebKit/Source/devtools/front_end/timeline/TimelineFlameChartView.js b/third_party/WebKit/Source/devtools/front_end/timeline/TimelineFlameChartView.js
index fc7ef06ae98e66902f6deb0c5e036338fd9544d8..c6c6950941aab79bf9ba8352922aec4119f1f52c 100644
--- a/third_party/WebKit/Source/devtools/front_end/timeline/TimelineFlameChartView.js
+++ b/third_party/WebKit/Source/devtools/front_end/timeline/TimelineFlameChartView.js
@@ -81,35 +81,22 @@ Timeline.TimelineFlameChartView = class extends UI.VBox {
this._boundRefresh = this._refresh.bind(this);
this._mainDataProvider.setEventColorMapping(Timeline.TimelineUIUtils.eventColor);
- if (Runtime.experiments.isEnabled('timelineColorByProduct'))
- ProductRegistry.instance().then(registry => this._productRegistry = registry);
- }
-
- /**
- * @param {!UI.Toolbar} toolbar
- */
- populateToolbar(toolbar) {
if (!Runtime.experiments.isEnabled('timelineColorByProduct'))
return;
- toolbar.appendSeparator();
- var colorBySetting = Common.settings.createSetting('timelineColorBy', Timeline.TimelineFlameChartView._ColorBy.URL);
- colorBySetting.addChangeListener(this._onColorByChanged, this);
- var options = [
- {value: Timeline.TimelineFlameChartView._ColorBy.URL, label: Common.UIString('Color by URL')},
- {value: Timeline.TimelineFlameChartView._ColorBy.Product, label: Common.UIString('Color by Product')}
- ];
- this._colorByCombobox = new UI.ToolbarSettingComboBox(options, colorBySetting);
- toolbar.appendToolbarItem(this._colorByCombobox);
- this._onColorByChanged();
- }
-
- _onColorByChanged() {
+ this._groupBySetting =
+ Common.settings.createSetting('timelineTreeGroupBy', Timeline.AggregatedTimelineTreeView.GroupBy.None);
+ this._groupBySetting.addChangeListener(this._onGroupByChanged, this);
+ this._onGroupByChanged();
+ ProductRegistry.instance().then(registry => this._productRegistry = registry);
+ }
+
+ _onGroupByChanged() {
/** @type {!Map<string, string>} */
this._urlToColorCache = new Map();
+ var colorByProduct = Runtime.experiments.isEnabled('timelineColorByProduct') &&
+ this._groupBySetting.get() === Timeline.AggregatedTimelineTreeView.GroupBy.Product;
this._mainDataProvider.setEventColorMapping(
- this._colorByCombobox.selectedOption().value === Timeline.TimelineFlameChartView._ColorBy.Product ?
- colorByProduct.bind(this) :
- Timeline.TimelineUIUtils.eventColor);
+ colorByProduct ? eventToColorByProduct.bind(this) : Timeline.TimelineUIUtils.eventColor);
this._mainFlameChart.update();
/**
@@ -117,20 +104,25 @@ Timeline.TimelineFlameChartView = class extends UI.VBox {
* @this {Timeline.TimelineFlameChartView}
* @return {string}
*/
- function colorByProduct(event) {
- if (event.name !== TimelineModel.TimelineModel.RecordType.JSFrame)
- return Timeline.TimelineUIUtils.eventStyle(event).category.color;
- var frame = event.args['data'];
- if (!Timeline.TimelineUIUtils.isUserFrame(frame))
- return Timeline.TimelineUIUtils.eventStyle(event).category.color;
- var color = this._urlToColorCache.get(frame.url);
+ function eventToColorByProduct(event) {
+ var url = Timeline.TimelineUIUtils.eventURL(event) || '';
+ var color = this._urlToColorCache.get(url);
if (!color) {
+ var defaultColor = '#f2ecdc';
if (!this._productRegistry)
- return Timeline.TimelineUIUtils.colorForId('');
- var parsedURL = frame.url.asParsedURL();
- var name = parsedURL && this._productRegistry.nameForUrl(parsedURL) || '';
- color = Timeline.TimelineUIUtils.colorForId(name);
- this._urlToColorCache.set(frame.url, color);
+ return defaultColor;
+ var parsedURL = url.asParsedURL();
+ if (!parsedURL)
+ return defaultColor;
+ var name = this._productRegistry.nameForUrl(parsedURL);
+ if (!name) {
+ name = parsedURL.host;
+ var rootFrames = this._model.timelineModel().rootFrames();
+ if (rootFrames.some(pageFrame => new Common.ParsedURL(pageFrame.url).host === name))
+ return defaultColor;
+ }
+ color = name ? ProductRegistry.BadgePool.colorForEntryName(name) : defaultColor;
+ this._urlToColorCache.set(url, color);
}
return color;
}
« no previous file with comments | « no previous file | third_party/WebKit/Source/devtools/front_end/timeline/TimelinePanel.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698