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

Side by Side Diff: Source/devtools/front_end/components/SearchableView.js

Issue 658403002: DevTools: Support regex search and case sensitive search in sources panel (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 2 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 | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved. 2 * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved.
3 * Copyright (C) 2007 Matt Lilek (pewtermoose@gmail.com). 3 * Copyright (C) 2007 Matt Lilek (pewtermoose@gmail.com).
4 * Copyright (C) 2009 Joseph Pecoraro 4 * Copyright (C) 2009 Joseph Pecoraro
5 * Copyright (C) 2011 Google Inc. All rights reserved. 5 * Copyright (C) 2011 Google Inc. All rights reserved.
6 * 6 *
7 * Redistribution and use in source and binary forms, with or without 7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions 8 * modification, are permitted provided that the following conditions
9 * are met: 9 * are met:
10 * 10 *
(...skipping 15 matching lines...) Expand all
26 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 26 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
27 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
29 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 */ 30 */
31 31
32 /** 32 /**
33 * @constructor 33 * @constructor
34 * @extends {WebInspector.VBox} 34 * @extends {WebInspector.VBox}
35 * @param {!WebInspector.Searchable} searchable 35 * @param {!WebInspector.Searchable} searchable
36 * @param {string=} settingName
36 */ 37 */
37 WebInspector.SearchableView = function(searchable) 38 WebInspector.SearchableView = function(searchable, settingName)
38 { 39 {
39 WebInspector.VBox.call(this); 40 WebInspector.VBox.call(this);
40 41
41 this._searchProvider = searchable; 42 this._searchProvider = searchable;
43 this._settingName = settingName;
44
42 this.element.addEventListener("keydown", this._onKeyDown.bind(this), false); 45 this.element.addEventListener("keydown", this._onKeyDown.bind(this), false);
43 46
44 this._footerElementContainer = this.element.createChild("div", "search-bar s tatus-bar hidden"); 47 this._footerElementContainer = this.element.createChild("div", "search-bar s tatus-bar hidden");
45 this._footerElementContainer.style.order = 100; 48 this._footerElementContainer.style.order = 100;
46 49
47 this._footerElement = this._footerElementContainer.createChild("table", "too lbar-search"); 50 this._footerElement = this._footerElementContainer.createChild("table", "too lbar-search");
48 this._footerElement.cellSpacing = 0; 51 this._footerElement.cellSpacing = 0;
49 52
50 this._firstRowElement = this._footerElement.createChild("tr"); 53 this._firstRowElement = this._footerElement.createChild("tr");
51 this._secondRowElement = this._footerElement.createChild("tr", "hidden"); 54 this._secondRowElement = this._footerElement.createChild("tr", "hidden");
52 55
56 if (this._searchProvider.supportsCaseSensitiveSearch() || this._searchProvid er.supportsRegexSearch()) {
57 var searchSettingsPrefixColumn = this._firstRowElement.createChild("td") ;
58 searchSettingsPrefixColumn.createChild("div", "search-settings-prefix")
59 this._secondRowElement.createChild("td");
60 }
61
62 if (this._searchProvider.supportsCaseSensitiveSearch()) {
63 var caseSensitiveColumn = this._firstRowElement.createChild("td");
64 this._caseSensitiveButton = new WebInspector.StatusBarTextButton("Case s ensitive", "case-sensitive-search", "Aa", 2);
lushnikov 2014/10/20 13:09:19 missing WebInspector.UIString two times here and a
65 this._caseSensitiveButton.addEventListener("click", this._toggleCaseSens itiveSearch, this);
66 caseSensitiveColumn.appendChild(this._caseSensitiveButton.element);
67 this._secondRowElement.createChild("td");
68 }
69
70 if (this._searchProvider.supportsRegexSearch()) {
71 var regexColumn = this._firstRowElement.createChild("td");
72 this._regexButton = new WebInspector.StatusBarTextButton("Regex", "regex -search", ".*", 2);
73 this._regexButton.addEventListener("click", this._toggleRegexSearch, thi s);
74 regexColumn.appendChild(this._regexButton.element);
75 this._secondRowElement.createChild("td");
76 }
77
53 // Column 1 78 // Column 1
54 var searchControlElementColumn = this._firstRowElement.createChild("td"); 79 var searchControlElementColumn = this._firstRowElement.createChild("td");
55 this._searchControlElement = searchControlElementColumn.createChild("span", "toolbar-search-control"); 80 this._searchControlElement = searchControlElementColumn.createChild("span", "toolbar-search-control");
56 this._searchInputElement = this._searchControlElement.createChild("input", " search-replace"); 81 this._searchInputElement = this._searchControlElement.createChild("input", " search-replace");
57 this._searchInputElement.id = "search-input-field"; 82 this._searchInputElement.id = "search-input-field";
58 this._searchInputElement.placeholder = WebInspector.UIString("Find"); 83 this._searchInputElement.placeholder = WebInspector.UIString("Find");
59 84
60 this._matchesElement = this._searchControlElement.createChild("label", "sear ch-results-matches"); 85 this._matchesElement = this._searchControlElement.createChild("label", "sear ch-results-matches");
61 this._matchesElement.setAttribute("for", "search-input-field"); 86 this._matchesElement.setAttribute("for", "search-input-field");
62 87
63 this._searchNavigationElement = this._searchControlElement.createChild("div" , "toolbar-search-navigation-controls"); 88 this._searchNavigationElement = this._searchControlElement.createChild("div" , "toolbar-search-navigation-controls");
64 89
65 this._searchNavigationPrevElement = this._searchNavigationElement.createChil d("div", "toolbar-search-navigation toolbar-search-navigation-prev"); 90 this._searchNavigationPrevElement = this._searchNavigationElement.createChil d("div", "toolbar-search-navigation toolbar-search-navigation-prev");
66 this._searchNavigationPrevElement.addEventListener("click", this._onPrevButt onSearch.bind(this), false); 91 this._searchNavigationPrevElement.addEventListener("click", this._onPrevButt onSearch.bind(this), false);
67 this._searchNavigationPrevElement.title = WebInspector.UIString("Search Prev ious"); 92 this._searchNavigationPrevElement.title = WebInspector.UIString("Search Prev ious");
68 93
69 this._searchNavigationNextElement = this._searchNavigationElement.createChil d("div", "toolbar-search-navigation toolbar-search-navigation-next"); 94 this._searchNavigationNextElement = this._searchNavigationElement.createChil d("div", "toolbar-search-navigation toolbar-search-navigation-next");
70 this._searchNavigationNextElement.addEventListener("click", this._onNextButt onSearch.bind(this), false); 95 this._searchNavigationNextElement.addEventListener("click", this._onNextButt onSearch.bind(this), false);
71 this._searchNavigationNextElement.title = WebInspector.UIString("Search Next "); 96 this._searchNavigationNextElement.title = WebInspector.UIString("Search Next ");
72 97
73 this._searchInputElement.addEventListener("mousedown", this._onSearchFieldMa nualFocus.bind(this), false); // when the search field is manually selected 98 this._searchInputElement.addEventListener("mousedown", this._onSearchFieldMa nualFocus.bind(this), false); // when the search field is manually selected
74 this._searchInputElement.addEventListener("keydown", this._onSearchKeyDown.b ind(this), true); 99 this._searchInputElement.addEventListener("keydown", this._onSearchKeyDown.b ind(this), true);
75 this._searchInputElement.addEventListener("input", this._onInput.bind(this), false); 100 this._searchInputElement.addEventListener("input", this._onInput.bind(this), false);
76 101
77 this._replaceInputElement = this._secondRowElement.createChild("td").createC hild("input", "search-replace toolbar-replace-control"); 102 this._replaceInputElement = this._secondRowElement.createChild("td").createC hild("input", "search-replace toolbar-replace-control");
78 this._replaceInputElement.addEventListener("keydown", this._onReplaceKeyDown .bind(this), true); 103 this._replaceInputElement.addEventListener("keydown", this._onReplaceKeyDown .bind(this), true);
79 this._replaceInputElement.placeholder = WebInspector.UIString("Replace"); 104 this._replaceInputElement.placeholder = WebInspector.UIString("Replace");
80 105
81 // Column 2 106 // Column 2
82 this._findButtonElement = this._firstRowElement.createChild("td").createChil d("button", "hidden"); 107 this._findButtonElement = this._firstRowElement.createChild("td").createChil d("button", "search-action-button hidden");
83 this._findButtonElement.textContent = WebInspector.UIString("Find"); 108 this._findButtonElement.textContent = WebInspector.UIString("Find");
84 this._findButtonElement.tabIndex = -1; 109 this._findButtonElement.tabIndex = -1;
85 this._findButtonElement.addEventListener("click", this._onFindClick.bind(thi s), false); 110 this._findButtonElement.addEventListener("click", this._onFindClick.bind(thi s), false);
86 111
87 this._replaceButtonElement = this._secondRowElement.createChild("td").create Child("button"); 112 this._replaceButtonElement = this._secondRowElement.createChild("td").create Child("button", "search-action-button");
88 this._replaceButtonElement.textContent = WebInspector.UIString("Replace"); 113 this._replaceButtonElement.textContent = WebInspector.UIString("Replace");
89 this._replaceButtonElement.disabled = true; 114 this._replaceButtonElement.disabled = true;
90 this._replaceButtonElement.tabIndex = -1; 115 this._replaceButtonElement.tabIndex = -1;
91 this._replaceButtonElement.addEventListener("click", this._replace.bind(this ), false); 116 this._replaceButtonElement.addEventListener("click", this._replace.bind(this ), false);
92 117
93 // Column 3 118 // Column 3
94 this._prevButtonElement = this._firstRowElement.createChild("td").createChil d("button", "hidden"); 119 this._prevButtonElement = this._firstRowElement.createChild("td").createChil d("button", "search-action-button hidden");
95 this._prevButtonElement.textContent = WebInspector.UIString("Previous"); 120 this._prevButtonElement.textContent = WebInspector.UIString("Previous");
96 this._prevButtonElement.tabIndex = -1; 121 this._prevButtonElement.tabIndex = -1;
97 this._prevButtonElement.addEventListener("click", this._onPreviousClick.bind (this), false); 122 this._prevButtonElement.addEventListener("click", this._onPreviousClick.bind (this), false);
98 123
99 this._replaceAllButtonElement = this._secondRowElement.createChild("td").cre ateChild("button"); 124 this._replaceAllButtonElement = this._secondRowElement.createChild("td").cre ateChild("button", "search-action-button");
100 this._replaceAllButtonElement.textContent = WebInspector.UIString("Replace A ll"); 125 this._replaceAllButtonElement.textContent = WebInspector.UIString("Replace A ll");
101 this._replaceAllButtonElement.addEventListener("click", this._replaceAll.bin d(this), false); 126 this._replaceAllButtonElement.addEventListener("click", this._replaceAll.bin d(this), false);
102 127
103 // Column 4 128 // Column 4
104 this._replaceElement = this._firstRowElement.createChild("td").createChild(" span"); 129 this._replaceElement = this._firstRowElement.createChild("td").createChild(" span");
105 130
106 this._replaceCheckboxElement = this._replaceElement.createChild("input"); 131 this._replaceCheckboxElement = this._replaceElement.createChild("input");
107 this._replaceCheckboxElement.type = "checkbox"; 132 this._replaceCheckboxElement.type = "checkbox";
108 this._uniqueId = ++WebInspector.SearchableView._lastUniqueId; 133 this._uniqueId = ++WebInspector.SearchableView._lastUniqueId;
109 var replaceCheckboxId = "search-replace-trigger" + this._uniqueId; 134 var replaceCheckboxId = "search-replace-trigger" + this._uniqueId;
110 this._replaceCheckboxElement.id = replaceCheckboxId; 135 this._replaceCheckboxElement.id = replaceCheckboxId;
111 this._replaceCheckboxElement.addEventListener("change", this._updateSecondRo wVisibility.bind(this), false); 136 this._replaceCheckboxElement.addEventListener("change", this._updateSecondRo wVisibility.bind(this), false);
112 137
113 this._replaceLabelElement = this._replaceElement.createChild("label"); 138 this._replaceLabelElement = this._replaceElement.createChild("label");
114 this._replaceLabelElement.textContent = WebInspector.UIString("Replace"); 139 this._replaceLabelElement.textContent = WebInspector.UIString("Replace");
115 this._replaceLabelElement.setAttribute("for", replaceCheckboxId); 140 this._replaceLabelElement.setAttribute("for", replaceCheckboxId);
116 141
117 // Column 5 142 // Column 5
118 var cancelButtonElement = this._firstRowElement.createChild("td").createChil d("button"); 143 var cancelButtonElement = this._firstRowElement.createChild("td").createChil d("button", "search-action-button");
119 cancelButtonElement.textContent = WebInspector.UIString("Cancel"); 144 cancelButtonElement.textContent = WebInspector.UIString("Cancel");
120 cancelButtonElement.tabIndex = -1; 145 cancelButtonElement.tabIndex = -1;
121 cancelButtonElement.addEventListener("click", this.closeSearch.bind(this), f alse); 146 cancelButtonElement.addEventListener("click", this.closeSearch.bind(this), f alse);
122 this._minimalSearchQuerySize = 3; 147 this._minimalSearchQuerySize = 3;
123 148
124 this._registerShortcuts(); 149 this._registerShortcuts();
150 this._loadSetting();
125 } 151 }
126 152
127 WebInspector.SearchableView._lastUniqueId = 0; 153 WebInspector.SearchableView._lastUniqueId = 0;
128 154
129 /** 155 /**
130 * @return {!Array.<!WebInspector.KeyboardShortcut.Descriptor>} 156 * @return {!Array.<!WebInspector.KeyboardShortcut.Descriptor>}
131 */ 157 */
132 WebInspector.SearchableView.findShortcuts = function() 158 WebInspector.SearchableView.findShortcuts = function()
133 { 159 {
134 if (WebInspector.SearchableView._findShortcuts) 160 if (WebInspector.SearchableView._findShortcuts)
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 { 196 {
171 if (WebInspector.SearchableView._findPreviousShortcuts) 197 if (WebInspector.SearchableView._findPreviousShortcuts)
172 return WebInspector.SearchableView._findPreviousShortcuts; 198 return WebInspector.SearchableView._findPreviousShortcuts;
173 WebInspector.SearchableView._findPreviousShortcuts = []; 199 WebInspector.SearchableView._findPreviousShortcuts = [];
174 if (WebInspector.isMac()) 200 if (WebInspector.isMac())
175 WebInspector.SearchableView._findPreviousShortcuts.push(WebInspector.Key boardShortcut.makeDescriptor("g", WebInspector.KeyboardShortcut.Modifiers.Meta | WebInspector.KeyboardShortcut.Modifiers.Shift)); 201 WebInspector.SearchableView._findPreviousShortcuts.push(WebInspector.Key boardShortcut.makeDescriptor("g", WebInspector.KeyboardShortcut.Modifiers.Meta | WebInspector.KeyboardShortcut.Modifiers.Shift));
176 return WebInspector.SearchableView._findPreviousShortcuts; 202 return WebInspector.SearchableView._findPreviousShortcuts;
177 } 203 }
178 204
179 WebInspector.SearchableView.prototype = { 205 WebInspector.SearchableView.prototype = {
206 _toggleCaseSensitiveSearch: function()
207 {
208 this._caseSensitiveButton.toggled = !this._caseSensitiveButton.toggled;
209 this._saveSetting();
210 this._performSearch(true, true);
211 },
212
213 _toggleRegexSearch: function()
214 {
215 this._regexButton.toggled = !this._regexButton.toggled;
216 this._saveSetting();
217 this._performSearch(true, true);
218 },
219
220 /**
221 * @return {?WebInspector.Setting}
222 */
223 _setting: function()
224 {
225 if (!this._settingName)
226 return null;
227 if (!WebInspector.settings[this._settingName])
228 WebInspector.settings[this._settingName] = WebInspector.settings.cre ateSetting(this._settingName, {});
229 return WebInspector.settings[this._settingName];
230 },
231
232 _saveSetting: function()
233 {
234 var setting = this._setting();
235 if (!setting)
236 return;
237 var settingValue = setting.get() || {};
238 settingValue.caseSensitive = this._caseSensitiveButton.toggled;
239 settingValue.isRegex = this._regexButton.toggled;
240 setting.set(settingValue);
241 },
242
243 _loadSetting: function()
244 {
245 var settingValue = this._setting() ? (this._setting().get() || {}) : {};
246 if (this._searchProvider.supportsCaseSensitiveSearch())
247 this._caseSensitiveButton.toggled = !!settingValue.caseSensitive;
248 if (this._searchProvider.supportsRegexSearch())
249 this._regexButton.toggled = !!settingValue.isRegex;
250 },
251
180 /** 252 /**
181 * @return {!Element} 253 * @return {!Element}
182 */ 254 */
183 defaultFocusedElement: function() 255 defaultFocusedElement: function()
184 { 256 {
185 var children = this.children(); 257 var children = this.children();
186 for (var i = 0; i < children.length; ++i) { 258 for (var i = 0; i < children.length; ++i) {
187 var element = children[i].defaultFocusedElement(); 259 var element = children[i].defaultFocusedElement();
188 if (element) 260 if (element)
189 return element; 261 return element;
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after
495 _performSearch: function(forceSearch, shouldJump, jumpBackwards) 567 _performSearch: function(forceSearch, shouldJump, jumpBackwards)
496 { 568 {
497 var query = this._searchInputElement.value; 569 var query = this._searchInputElement.value;
498 if (!query || (!forceSearch && query.length < this._minimalSearchQuerySi ze && !this._currentQuery)) { 570 if (!query || (!forceSearch && query.length < this._minimalSearchQuerySi ze && !this._currentQuery)) {
499 this._clearSearch(); 571 this._clearSearch();
500 return; 572 return;
501 } 573 }
502 574
503 this._currentQuery = query; 575 this._currentQuery = query;
504 this._searchProvider.currentQuery = query; 576 this._searchProvider.currentQuery = query;
505 this._searchProvider.performSearch(query, shouldJump, jumpBackwards); 577
578 var caseSensitive = this._caseSensitiveButton.toggled;
579 var isRegex = this._regexButton.toggled;
580 var searchConfig = new WebInspector.SearchableView.SearchConfig(query, c aseSensitive, isRegex);
581 this._searchProvider.performSearch(searchConfig, shouldJump, jumpBackwar ds);
506 }, 582 },
507 583
508 _updateSecondRowVisibility: function() 584 _updateSecondRowVisibility: function()
509 { 585 {
510 var secondRowVisible = this._replaceCheckboxElement.checked; 586 var secondRowVisible = this._replaceCheckboxElement.checked;
511 this._footerElementContainer.classList.toggle("replaceable", secondRowVi sible); 587 this._footerElementContainer.classList.toggle("replaceable", secondRowVi sible);
512 this._footerElement.classList.toggle("toolbar-search-replace", secondRow Visible); 588 this._footerElement.classList.toggle("toolbar-search-replace", secondRow Visible);
513 this._secondRowElement.classList.toggle("hidden", !secondRowVisible); 589 this._secondRowElement.classList.toggle("hidden", !secondRowVisible);
514 this._prevButtonElement.classList.toggle("hidden", !secondRowVisible); 590 this._prevButtonElement.classList.toggle("hidden", !secondRowVisible);
515 this._findButtonElement.classList.toggle("hidden", !secondRowVisible); 591 this._findButtonElement.classList.toggle("hidden", !secondRowVisible);
516 this._replaceCheckboxElement.tabIndex = secondRowVisible ? -1 : 0; 592 this._replaceCheckboxElement.tabIndex = secondRowVisible ? -1 : 0;
517 593
518 if (secondRowVisible) 594 if (secondRowVisible)
519 this._replaceInputElement.focus(); 595 this._replaceInputElement.focus();
520 else 596 else
521 this._searchInputElement.focus(); 597 this._searchInputElement.focus();
522 this.doResize(); 598 this.doResize();
523 }, 599 },
524 600
525 _replace: function() 601 _replace: function()
526 { 602 {
527 /** @type {!WebInspector.Replaceable} */ (this._searchProvider).replaceS electionWith(this._replaceInputElement.value); 603 /** @type {!WebInspector.Replaceable} */ (this._searchProvider).replaceS electionWith(this._replaceInputElement.value);
528 delete this._currentQuery; 604 delete this._currentQuery;
529 this._performSearch(true, true); 605 this._performSearch(true, true);
530 }, 606 },
531 607
532 _replaceAll: function() 608 _replaceAll: function()
533 { 609 {
534 /** @type {!WebInspector.Replaceable} */ (this._searchProvider).replaceA llWith(this._searchInputElement.value, this._replaceInputElement.value); 610 var query = this._searchInputElement.value;
611 var caseSensitive = this._caseSensitiveButton.toggled;
612 var isRegex = this._regexButton.toggled;
613 var searchConfig = new WebInspector.SearchableView.SearchConfig(query, c aseSensitive, isRegex);
614 /** @type {!WebInspector.Replaceable} */ (this._searchProvider).replaceA llWith(searchConfig, this._replaceInputElement.value);
535 }, 615 },
536 616
537 _onInput: function(event) 617 _onInput: function(event)
538 { 618 {
539 this._onValueChanged(); 619 this._onValueChanged();
540 }, 620 },
541 621
542 _onValueChanged: function() 622 _onValueChanged: function()
543 { 623 {
544 this._performSearch(false, true); 624 this._performSearch(false, true);
545 }, 625 },
546 626
547 __proto__: WebInspector.VBox.prototype 627 __proto__: WebInspector.VBox.prototype
548 } 628 }
549 629
550 /** 630 /**
551 * @interface 631 * @interface
552 */ 632 */
553 WebInspector.Searchable = function() 633 WebInspector.Searchable = function()
554 { 634 {
555 } 635 }
556 636
557 WebInspector.Searchable.prototype = { 637 WebInspector.Searchable.prototype = {
558 searchCanceled: function() { }, 638 searchCanceled: function() { },
559 639
560 /** 640 /**
561 * @param {string} query 641 * @param {!WebInspector.SearchableView.SearchConfig} searchConfig
562 * @param {boolean} shouldJump 642 * @param {boolean} shouldJump
563 * @param {boolean=} jumpBackwards 643 * @param {boolean=} jumpBackwards
564 */ 644 */
565 performSearch: function(query, shouldJump, jumpBackwards) { }, 645 performSearch: function(searchConfig, shouldJump, jumpBackwards) { },
566 646
567 jumpToNextSearchResult: function() { }, 647 jumpToNextSearchResult: function() { },
568 648
569 jumpToPreviousSearchResult: function() { } 649 jumpToPreviousSearchResult: function() { },
650
651 /**
652 * @return {boolean}
653 */
654 supportsCaseSensitiveSearch: function() { },
655
656 /**
657 * @return {boolean}
658 */
659 supportsRegexSearch: function() { }
570 } 660 }
571 661
572 /** 662 /**
573 * @interface 663 * @interface
574 */ 664 */
575 WebInspector.Replaceable = function() 665 WebInspector.Replaceable = function()
576 { 666 {
577 } 667 }
578 668
579 WebInspector.Replaceable.prototype = { 669 WebInspector.Replaceable.prototype = {
580 /** 670 /**
581 * @param {string} text 671 * @param {string} replacement
582 */ 672 */
583 replaceSelectionWith: function(text) { }, 673 replaceSelectionWith: function(replacement) { },
584 674
585 /** 675 /**
586 * @param {string} query 676 * @param {!WebInspector.SearchableView.SearchConfig} searchConfig
587 * @param {string} replacement 677 * @param {string} replacement
588 */ 678 */
589 replaceAllWith: function(query, replacement) { } 679 replaceAllWith: function(searchConfig, replacement) { }
590 } 680 }
681
682 /**
683 * @constructor
684 * @param {string} query
685 * @param {boolean} caseSensitive
686 * @param {boolean} isRegex
687 */
688 WebInspector.SearchableView.SearchConfig = function(query, caseSensitive, isRege x)
689 {
690 this.query = query;
691 this.caseSensitive = caseSensitive;
692 this.isRegex = isRegex;
693 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698