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

Unified Diff: Source/devtools/front_end/FilterBar.js

Issue 72863002: [DevTools] Added regex support to console filters. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Added missing semicolon. Created 7 years 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 | « Source/devtools/front_end/ConsoleView.js ('k') | Source/devtools/front_end/filter.css » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/devtools/front_end/FilterBar.js
diff --git a/Source/devtools/front_end/FilterBar.js b/Source/devtools/front_end/FilterBar.js
index b7cc8425fef7c1991d77aebc5f62a731c669d04e..0ae33e2fabc5aeb1ae4e6376f18688caa5ae5a6e 100644
--- a/Source/devtools/front_end/FilterBar.js
+++ b/Source/devtools/front_end/FilterBar.js
@@ -159,9 +159,13 @@ WebInspector.FilterUI.prototype = {
* @constructor
* @implements {WebInspector.FilterUI}
* @extends {WebInspector.Object}
+ * @param {boolean=} supportRegex
*/
-WebInspector.TextFilterUI = function()
+WebInspector.TextFilterUI = function(supportRegex)
{
+ this._supportRegex = !!supportRegex;
+ this._regex = null;
+
this._filterElement = document.createElement("div");
this._filterElement.className = "filter-text-filter";
@@ -171,6 +175,18 @@ WebInspector.TextFilterUI = function()
this._filterInputElement.addEventListener("mousedown", this._onFilterFieldManualFocus.bind(this), false); // when the search field is manually selected
this._filterInputElement.addEventListener("input", this._onInput.bind(this), false);
this._filterInputElement.addEventListener("change", this._onInput.bind(this), false);
+
+ if (this._supportRegex) {
+ this._filterElement.classList.add("supports-regex");
+ this._regexCheckBox = this._filterElement.createChild("input");
+ this._regexCheckBox.type = "checkbox";
+ this._regexCheckBox.id = "text-filter-regex";
+ this._regexCheckBox.addEventListener("change", this._onInput.bind(this), false);
+
+ this._regexLabel = this._filterElement.createChild("label");
+ this._regexLabel.htmlFor = "text-filter-regex";
+ this._regexLabel.textContent = WebInspector.UIString("Regex");
+ }
}
WebInspector.TextFilterUI.prototype = {
@@ -212,10 +228,6 @@ WebInspector.TextFilterUI.prototype = {
*/
regex: function()
{
- if (this._regex !== undefined)
- return this._regex;
- var filterQuery = this.value();
- this._regex = filterQuery ? createPlainTextSearchRegex(filterQuery, "i") : null;
return this._regex;
},
@@ -236,7 +248,22 @@ WebInspector.TextFilterUI.prototype = {
},
_valueChanged: function() {
- delete this._regex;
+ var filterQuery = this.value();
+
+ this._regex = null;
+ this._filterInputElement.classList.remove("filter-text-invalid");
+ if (filterQuery) {
+ if (this._supportRegex && this._regexCheckBox.checked) {
+ try {
+ this._regex = new RegExp(filterQuery, "i");
+ } catch (e) {
+ this._filterInputElement.classList.add("filter-text-invalid");
+ }
+ } else {
+ this._regex = createPlainTextSearchRegex(filterQuery, "i");
+ }
+ }
+
this.dispatchEventToListeners(WebInspector.FilterUI.Events.FilterChanged, null);
},
« no previous file with comments | « Source/devtools/front_end/ConsoleView.js ('k') | Source/devtools/front_end/filter.css » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698