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

Side by Side 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2007, 2008 Apple Inc. All rights reserved. 2 * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
3 * Copyright (C) 2009 Joseph Pecoraro 3 * Copyright (C) 2009 Joseph Pecoraro
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 8 *
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 this._showSettingsPaneSetting, 'largeicon-settings-gear', Common.UIStrin g('Console settings')); 64 this._showSettingsPaneSetting, 'largeicon-settings-gear', Common.UIStrin g('Console settings'));
65 this._progressToolbarItem = new UI.ToolbarItem(createElement('div')); 65 this._progressToolbarItem = new UI.ToolbarItem(createElement('div'));
66 66
67 var toolbar = new UI.Toolbar('', this._contentsElement); 67 var toolbar = new UI.Toolbar('', this._contentsElement);
68 toolbar.appendToolbarItem(UI.Toolbar.createActionButton( 68 toolbar.appendToolbarItem(UI.Toolbar.createActionButton(
69 /** @type {!UI.Action }*/ (UI.actionRegistry.action('console.clear')))); 69 /** @type {!UI.Action }*/ (UI.actionRegistry.action('console.clear'))));
70 toolbar.appendSeparator(); 70 toolbar.appendSeparator();
71 toolbar.appendToolbarItem(this._consoleContextSelector.toolbarItem()); 71 toolbar.appendToolbarItem(this._consoleContextSelector.toolbarItem());
72 toolbar.appendSeparator(); 72 toolbar.appendSeparator();
73 toolbar.appendToolbarItem(this._filter._textFilterUI); 73 toolbar.appendToolbarItem(this._filter._textFilterUI);
74 toolbar.appendToolbarItem(this._filter._levelComboBox); 74 toolbar.appendToolbarItem(this._filter._levelMenuButton);
75 toolbar.appendToolbarItem(this._filter._levelMenuButtonArrow);
75 toolbar.appendToolbarItem(this._progressToolbarItem); 76 toolbar.appendToolbarItem(this._progressToolbarItem);
76 toolbar.appendSpacer(); 77 toolbar.appendSpacer();
77 toolbar.appendToolbarItem(this._filterStatusText); 78 toolbar.appendToolbarItem(this._filterStatusText);
78 toolbar.appendSeparator(); 79 toolbar.appendSeparator();
79 toolbar.appendToolbarItem(this._showSettingsPaneButton); 80 toolbar.appendToolbarItem(this._showSettingsPaneButton);
80 81
81 this._preserveLogCheckbox = new UI.ToolbarSettingCheckbox( 82 this._preserveLogCheckbox = new UI.ToolbarSettingCheckbox(
82 Common.moduleSetting('preserveConsoleLog'), Common.UIString('Do not clea r log on page reload / navigation'), 83 Common.moduleSetting('preserveConsoleLog'), Common.UIString('Do not clea r log on page reload / navigation'),
83 Common.UIString('Preserve log')); 84 Common.UIString('Preserve log'));
84 this._hideNetworkMessagesCheckbox = new UI.ToolbarSettingCheckbox( 85 this._hideNetworkMessagesCheckbox = new UI.ToolbarSettingCheckbox(
(...skipping 915 matching lines...) Expand 10 before | Expand all | Expand 10 after
1000 * @unrestricted 1001 * @unrestricted
1001 */ 1002 */
1002 Console.ConsoleViewFilter = class { 1003 Console.ConsoleViewFilter = class {
1003 /** 1004 /**
1004 * @param {function()} filterChangedCallback 1005 * @param {function()} filterChangedCallback
1005 */ 1006 */
1006 constructor(filterChangedCallback) { 1007 constructor(filterChangedCallback) {
1007 this._filterChanged = filterChangedCallback; 1008 this._filterChanged = filterChangedCallback;
1008 1009
1009 this._messageURLFiltersSetting = Common.settings.createSetting('messageURLFi lters', {}); 1010 this._messageURLFiltersSetting = Common.settings.createSetting('messageURLFi lters', {});
1010 this._messageLevelFiltersSetting = 1011 this._messageLevelFiltersSetting = Console.ConsoleViewFilter.levelFilterSett ing();
1011 Common.settings.createSetting('messageLevelFilters2', ConsoleModel.Conso leMessage.MessageLevel.Info); 1012
1012 this._hideNetworkMessagesSetting = Common.moduleSetting('hideNetworkMessages '); 1013 this._hideNetworkMessagesSetting = Common.moduleSetting('hideNetworkMessages ');
1013 this._filterByExecutionContextSetting = Common.moduleSetting('selectedContex tFilterEnabled'); 1014 this._filterByExecutionContextSetting = Common.moduleSetting('selectedContex tFilterEnabled');
1014 this._filterByConsoleAPISetting = Common.moduleSetting('consoleAPIFilterEnab led'); 1015 this._filterByConsoleAPISetting = Common.moduleSetting('consoleAPIFilterEnab led');
1015 1016
1016 this._messageURLFiltersSetting.addChangeListener(this._filterChanged); 1017 this._messageURLFiltersSetting.addChangeListener(this._filterChanged);
1017 this._messageLevelFiltersSetting.addChangeListener(this._filterChanged); 1018 this._messageLevelFiltersSetting.addChangeListener(this._filterChanged);
1018 this._hideNetworkMessagesSetting.addChangeListener(this._filterChanged); 1019 this._hideNetworkMessagesSetting.addChangeListener(this._filterChanged);
1019 this._filterByExecutionContextSetting.addChangeListener(this._filterChanged) ; 1020 this._filterByExecutionContextSetting.addChangeListener(this._filterChanged) ;
1020 this._filterByConsoleAPISetting.addChangeListener(this._filterChanged); 1021 this._filterByConsoleAPISetting.addChangeListener(this._filterChanged);
1021 1022
1022 this._textFilterUI = new UI.ToolbarInput(Common.UIString('Filter'), 0.2, 1, true); 1023 this._textFilterUI = new UI.ToolbarInput(Common.UIString('Filter'), 0.2, 1, true);
1023 this._textFilterUI.addEventListener(UI.ToolbarInput.Event.TextChanged, this. _textFilterChanged, this); 1024 this._textFilterUI.addEventListener(UI.ToolbarInput.Event.TextChanged, this. _textFilterChanged, this);
1024 1025
1025 var levels = [ 1026 this._levelLabels = {};
1026 {value: ConsoleModel.ConsoleMessage.MessageLevel.Verbose, label: Common.UI String('Verbose')}, 1027 this._levelLabels[ConsoleModel.ConsoleMessage.MessageLevel.Verbose] = Common .UIString('Verbose');
1027 {value: ConsoleModel.ConsoleMessage.MessageLevel.Info, label: Common.UIStr ing('Info'), default: true}, 1028 this._levelLabels[ConsoleModel.ConsoleMessage.MessageLevel.Info] = Common.UI String('Info');
1028 {value: ConsoleModel.ConsoleMessage.MessageLevel.Warning, label: Common.UI String('Warnings')}, 1029 this._levelLabels[ConsoleModel.ConsoleMessage.MessageLevel.Warning] = Common .UIString('Warnings');
1029 {value: ConsoleModel.ConsoleMessage.MessageLevel.Error, label: Common.UISt ring('Errors')} 1030 this._levelLabels[ConsoleModel.ConsoleMessage.MessageLevel.Error] = Common.U IString('Errors');
1030 ];
1031 1031
1032 this._levelComboBox = 1032 this._levelMenuButton = new UI.ToolbarText('');
1033 new UI.ToolbarSettingComboBox(levels, this._messageLevelFiltersSetting, Common.UIString('Level')); 1033 this._levelMenuButtonArrow = new UI.ToolbarItem(UI.Icon.create('smallicon-tr iangle-down'));
dgozman 2017/06/06 19:02:46 Oh my...
1034 this._levelMenuButton.element.addEventListener('click', this._showLevelConte xtMenu.bind(this));
1035 this._levelMenuButtonArrow.element.addEventListener('click', this._showLevel ContextMenu.bind(this));
1036
1037 this._updateLevelMenuButtonText();
1038 this._messageLevelFiltersSetting.addChangeListener(this._updateLevelMenuButt onText.bind(this));
1039 }
1040
1041 /**
1042 * @return {!Common.Setting}
1043 */
1044 static levelFilterSetting() {
1045 return Common.settings.createSetting('messageLevelFilters', Console.ConsoleV iewFilter.defaultLevelsFilterValue());
1046 }
1047
1048 /**
1049 * @return {!Object<string, boolean>}
1050 */
1051 static allLevelsFilterValue() {
1052 var result = {};
1053 for (var name of Object.values(ConsoleModel.ConsoleMessage.MessageLevel))
1054 result[name] = true;
1055 return result;
1056 }
1057
1058 /**
1059 * @return {!Object<string, boolean>}
1060 */
1061 static defaultLevelsFilterValue() {
1062 var result = Console.ConsoleViewFilter.allLevelsFilterValue();
1063 result[ConsoleModel.ConsoleMessage.MessageLevel.Verbose] = false;
1064 return result;
1065 }
1066
1067 _updateLevelMenuButtonText() {
1068 var isAll = true;
1069 var isDefault = true;
1070 var allValue = Console.ConsoleViewFilter.allLevelsFilterValue();
1071 var defaultValue = Console.ConsoleViewFilter.defaultLevelsFilterValue();
1072
1073 var text = null;
1074 var levels = this._messageLevelFiltersSetting.get();
1075 for (var name of Object.values(ConsoleModel.ConsoleMessage.MessageLevel)) {
1076 isAll = isAll && levels[name] === allValue[name];
1077 isDefault = isDefault && levels[name] === defaultValue[name];
1078 if (levels[name])
1079 text = text ? Common.UIString('Custom levels') : Common.UIString('%s onl y', this._levelLabels[name]);
1080 }
1081 if (isAll)
1082 text = Common.UIString('All levels');
1083 else if (isDefault)
1084 text = Common.UIString('Default levels');
1085 else
1086 text = text || Common.UIString('Hide all');
1087 this._levelMenuButton.setText(text);
1088 }
1089
1090 /**
1091 * @param {!Event} event
1092 */
1093 _showLevelContextMenu(event) {
1094 var setting = this._messageLevelFiltersSetting;
1095 var levels = setting.get();
1096
1097 var contextMenu = new UI.ContextMenu(event, true);
1098 contextMenu.appendItem(
1099 Common.UIString('Default'), () => setting.set(Console.ConsoleViewFilter. defaultLevelsFilterValue()));
1100 contextMenu.appendSeparator();
1101 for (var level in this._levelLabels)
1102 contextMenu.appendCheckboxItem(this._levelLabels[level], toggleShowLevel.b ind(null, level), levels[level]);
1103 contextMenu.show();
1104
1105 /**
1106 * @param {string} level
1107 */
1108 function toggleShowLevel(level) {
1109 levels[level] = !levels[level];
1110 setting.set(levels);
1111 }
1034 } 1112 }
1035 1113
1036 _textFilterChanged() { 1114 _textFilterChanged() {
1037 this._filterText = this._textFilterUI.value(); 1115 this._filterText = this._textFilterUI.value();
1038 this._filterRegex = null; 1116 this._filterRegex = null;
1039 if (this._filterText.startsWith('/') && this._filterText.endsWith('/')) { 1117 if (this._filterText.startsWith('/') && this._filterText.endsWith('/')) {
1040 try { 1118 try {
1041 this._filterRegex = new RegExp(this._filterText.substring(1, this._filte rText.length - 1), 'i'); 1119 this._filterRegex = new RegExp(this._filterText.substring(1, this._filte rText.length - 1), 'i');
1042 } catch (e) { 1120 } catch (e) {
1043 } 1121 }
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
1097 if (viewMessage.consoleMessage().isGroupMessage()) 1175 if (viewMessage.consoleMessage().isGroupMessage())
1098 return true; 1176 return true;
1099 1177
1100 if (message.type === ConsoleModel.ConsoleMessage.MessageType.Result || 1178 if (message.type === ConsoleModel.ConsoleMessage.MessageType.Result ||
1101 message.type === ConsoleModel.ConsoleMessage.MessageType.Command) 1179 message.type === ConsoleModel.ConsoleMessage.MessageType.Command)
1102 return true; 1180 return true;
1103 1181
1104 if (message.url && this._messageURLFiltersSetting.get()[message.url]) 1182 if (message.url && this._messageURLFiltersSetting.get()[message.url])
1105 return false; 1183 return false;
1106 1184
1107 var filterOrdinal = ConsoleModel.ConsoleMessage.MessageLevel.ordinal( 1185 var levels = this._messageLevelFiltersSetting.get();
1108 /** @type {!ConsoleModel.ConsoleMessage.MessageLevel} */ (this._messageL evelFiltersSetting.get())); 1186 if (!levels[message.level])
1109 if (message.level && ConsoleModel.ConsoleMessage.MessageLevel.ordinal(messag e.level) < filterOrdinal)
1110 return false; 1187 return false;
1111 1188
1112 if (this._filterRegex) { 1189 if (this._filterRegex) {
1113 if (!viewMessage.matchesFilterRegex(this._filterRegex)) 1190 if (!viewMessage.matchesFilterRegex(this._filterRegex))
1114 return false; 1191 return false;
1115 } else if (this._filterText) { 1192 } else if (this._filterText) {
1116 if (!viewMessage.matchesFilterText(this._filterText)) 1193 if (!viewMessage.matchesFilterText(this._filterText))
1117 return false; 1194 return false;
1118 } 1195 }
1119 1196
1120 if (this._filterByConsoleAPISetting.get() && 1197 if (this._filterByConsoleAPISetting.get() &&
1121 message.source !== ConsoleModel.ConsoleMessage.MessageSource.ConsoleAPI) 1198 message.source !== ConsoleModel.ConsoleMessage.MessageSource.ConsoleAPI)
1122 return false; 1199 return false;
1123 1200
1124 return true; 1201 return true;
1125 } 1202 }
1126 1203
1127 reset() { 1204 reset() {
1128 this._messageURLFiltersSetting.set({}); 1205 this._messageURLFiltersSetting.set({});
1129 this._messageLevelFiltersSetting.set(ConsoleModel.ConsoleMessage.MessageLeve l.Info); 1206 this._messageLevelFiltersSetting.set(Console.ConsoleViewFilter.defaultLevels FilterValue());
1130 this._filterByExecutionContextSetting.set(false); 1207 this._filterByExecutionContextSetting.set(false);
1131 this._filterByConsoleAPISetting.set(false); 1208 this._filterByConsoleAPISetting.set(false);
1132 this._hideNetworkMessagesSetting.set(false); 1209 this._hideNetworkMessagesSetting.set(false);
1133 this._textFilterUI.setValue(''); 1210 this._textFilterUI.setValue('');
1134 this._textFilterChanged(); 1211 this._textFilterChanged();
1135 } 1212 }
1136 }; 1213 };
1137 1214
1138 /** 1215 /**
1139 * @unrestricted 1216 * @unrestricted
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
1289 return true; 1366 return true;
1290 } 1367 }
1291 return false; 1368 return false;
1292 } 1369 }
1293 }; 1370 };
1294 1371
1295 /** 1372 /**
1296 * @typedef {{messageIndex: number, matchIndex: number}} 1373 * @typedef {{messageIndex: number, matchIndex: number}}
1297 */ 1374 */
1298 Console.ConsoleView.RegexMatchRange; 1375 Console.ConsoleView.RegexMatchRange;
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698