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

Unified Diff: third_party/WebKit/Source/devtools/front_end/console/ConsoleView.js

Issue 2920183003: DevTools: allow setting individual console filter levels. (Closed)
Patch Set: with tests Created 3 years, 6 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
Index: third_party/WebKit/Source/devtools/front_end/console/ConsoleView.js
diff --git a/third_party/WebKit/Source/devtools/front_end/console/ConsoleView.js b/third_party/WebKit/Source/devtools/front_end/console/ConsoleView.js
index 9b689007f119fbeb439cd7e6c137ff3469f0c69e..3cc5a05d7e1426e8caa0cf098873d30f2cf2e4ee 100644
--- a/third_party/WebKit/Source/devtools/front_end/console/ConsoleView.js
+++ b/third_party/WebKit/Source/devtools/front_end/console/ConsoleView.js
@@ -71,7 +71,8 @@ Console.ConsoleView = class extends UI.VBox {
toolbar.appendToolbarItem(this._consoleContextSelector.toolbarItem());
toolbar.appendSeparator();
toolbar.appendToolbarItem(this._filter._textFilterUI);
- toolbar.appendToolbarItem(this._filter._levelComboBox);
+ toolbar.appendToolbarItem(this._filter._levelMenuButton);
+ toolbar.appendToolbarItem(this._filter._levelMenuButtonArrow);
toolbar.appendToolbarItem(this._progressToolbarItem);
toolbar.appendSpacer();
toolbar.appendToolbarItem(this._filterStatusText);
@@ -1007,8 +1008,8 @@ Console.ConsoleViewFilter = class {
this._filterChanged = filterChangedCallback;
this._messageURLFiltersSetting = Common.settings.createSetting('messageURLFilters', {});
- this._messageLevelFiltersSetting =
- Common.settings.createSetting('messageLevelFilters2', ConsoleModel.ConsoleMessage.MessageLevel.Info);
+ this._messageLevelFiltersSetting = Console.ConsoleViewFilter.levelFilterSetting();
+
this._hideNetworkMessagesSetting = Common.moduleSetting('hideNetworkMessages');
this._filterByExecutionContextSetting = Common.moduleSetting('selectedContextFilterEnabled');
this._filterByConsoleAPISetting = Common.moduleSetting('consoleAPIFilterEnabled');
@@ -1022,15 +1023,92 @@ Console.ConsoleViewFilter = class {
this._textFilterUI = new UI.ToolbarInput(Common.UIString('Filter'), 0.2, 1, true);
this._textFilterUI.addEventListener(UI.ToolbarInput.Event.TextChanged, this._textFilterChanged, this);
- var levels = [
- {value: ConsoleModel.ConsoleMessage.MessageLevel.Verbose, label: Common.UIString('Verbose')},
- {value: ConsoleModel.ConsoleMessage.MessageLevel.Info, label: Common.UIString('Info'), default: true},
- {value: ConsoleModel.ConsoleMessage.MessageLevel.Warning, label: Common.UIString('Warnings')},
- {value: ConsoleModel.ConsoleMessage.MessageLevel.Error, label: Common.UIString('Errors')}
- ];
+ this._levelLabels = {};
+ this._levelLabels[ConsoleModel.ConsoleMessage.MessageLevel.Verbose] = Common.UIString('Verbose');
+ this._levelLabels[ConsoleModel.ConsoleMessage.MessageLevel.Info] = Common.UIString('Info');
+ this._levelLabels[ConsoleModel.ConsoleMessage.MessageLevel.Warning] = Common.UIString('Warnings');
+ this._levelLabels[ConsoleModel.ConsoleMessage.MessageLevel.Error] = Common.UIString('Errors');
+
+ this._levelMenuButton = new UI.ToolbarText('');
+ this._levelMenuButtonArrow = new UI.ToolbarItem(UI.Icon.create('smallicon-triangle-down'));
dgozman 2017/06/06 19:02:46 Oh my...
+ this._levelMenuButton.element.addEventListener('click', this._showLevelContextMenu.bind(this));
+ this._levelMenuButtonArrow.element.addEventListener('click', this._showLevelContextMenu.bind(this));
+
+ this._updateLevelMenuButtonText();
+ this._messageLevelFiltersSetting.addChangeListener(this._updateLevelMenuButtonText.bind(this));
+ }
+
+ /**
+ * @return {!Common.Setting}
+ */
+ static levelFilterSetting() {
+ return Common.settings.createSetting('messageLevelFilters', Console.ConsoleViewFilter.defaultLevelsFilterValue());
+ }
+
+ /**
+ * @return {!Object<string, boolean>}
+ */
+ static allLevelsFilterValue() {
+ var result = {};
+ for (var name of Object.values(ConsoleModel.ConsoleMessage.MessageLevel))
+ result[name] = true;
+ return result;
+ }
+
+ /**
+ * @return {!Object<string, boolean>}
+ */
+ static defaultLevelsFilterValue() {
+ var result = Console.ConsoleViewFilter.allLevelsFilterValue();
+ result[ConsoleModel.ConsoleMessage.MessageLevel.Verbose] = false;
+ return result;
+ }
+
+ _updateLevelMenuButtonText() {
+ var isAll = true;
+ var isDefault = true;
+ var allValue = Console.ConsoleViewFilter.allLevelsFilterValue();
+ var defaultValue = Console.ConsoleViewFilter.defaultLevelsFilterValue();
+
+ var text = null;
+ var levels = this._messageLevelFiltersSetting.get();
+ for (var name of Object.values(ConsoleModel.ConsoleMessage.MessageLevel)) {
+ isAll = isAll && levels[name] === allValue[name];
+ isDefault = isDefault && levels[name] === defaultValue[name];
+ if (levels[name])
+ text = text ? Common.UIString('Custom levels') : Common.UIString('%s only', this._levelLabels[name]);
+ }
+ if (isAll)
+ text = Common.UIString('All levels');
+ else if (isDefault)
+ text = Common.UIString('Default levels');
+ else
+ text = text || Common.UIString('Hide all');
+ this._levelMenuButton.setText(text);
+ }
+
+ /**
+ * @param {!Event} event
+ */
+ _showLevelContextMenu(event) {
+ var setting = this._messageLevelFiltersSetting;
+ var levels = setting.get();
+
+ var contextMenu = new UI.ContextMenu(event, true);
+ contextMenu.appendItem(
+ Common.UIString('Default'), () => setting.set(Console.ConsoleViewFilter.defaultLevelsFilterValue()));
+ contextMenu.appendSeparator();
+ for (var level in this._levelLabels)
+ contextMenu.appendCheckboxItem(this._levelLabels[level], toggleShowLevel.bind(null, level), levels[level]);
+ contextMenu.show();
- this._levelComboBox =
- new UI.ToolbarSettingComboBox(levels, this._messageLevelFiltersSetting, Common.UIString('Level'));
+ /**
+ * @param {string} level
+ */
+ function toggleShowLevel(level) {
+ levels[level] = !levels[level];
+ setting.set(levels);
+ }
}
_textFilterChanged() {
@@ -1104,9 +1182,8 @@ Console.ConsoleViewFilter = class {
if (message.url && this._messageURLFiltersSetting.get()[message.url])
return false;
- var filterOrdinal = ConsoleModel.ConsoleMessage.MessageLevel.ordinal(
- /** @type {!ConsoleModel.ConsoleMessage.MessageLevel} */ (this._messageLevelFiltersSetting.get()));
- if (message.level && ConsoleModel.ConsoleMessage.MessageLevel.ordinal(message.level) < filterOrdinal)
+ var levels = this._messageLevelFiltersSetting.get();
+ if (!levels[message.level])
return false;
if (this._filterRegex) {
@@ -1126,7 +1203,7 @@ Console.ConsoleViewFilter = class {
reset() {
this._messageURLFiltersSetting.set({});
- this._messageLevelFiltersSetting.set(ConsoleModel.ConsoleMessage.MessageLevel.Info);
+ this._messageLevelFiltersSetting.set(Console.ConsoleViewFilter.defaultLevelsFilterValue());
this._filterByExecutionContextSetting.set(false);
this._filterByConsoleAPISetting.set(false);
this._hideNetworkMessagesSetting.set(false);

Powered by Google App Engine
This is Rietveld 408576698