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); |