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

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: Fixed css color format. Created 7 years, 1 month 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: Source/devtools/front_end/FilterBar.js
diff --git a/Source/devtools/front_end/FilterBar.js b/Source/devtools/front_end/FilterBar.js
index 368d98a8a36dd20baf7bffb14535ee1ff956114a..638e8738d3d2238971a1f3cd01b4b66a1a769b8e 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,17 @@ 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._regexCheckBox = this._filterElement.createChild("input");
vsevik 2013/11/27 13:37:23 4 spaces indent in blink.
Dmitry Zvorygin 2013/11/27 17:52:24 Done.
+ 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 +227,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 +247,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);
},

Powered by Google App Engine
This is Rietveld 408576698