| Index: chrome/content/ui/filters-search.js |
| =================================================================== |
| --- a/chrome/content/ui/filters-search.js |
| +++ b/chrome/content/ui/filters-search.js |
| @@ -134,23 +134,100 @@ |
| */ |
| FilterSearch.fakeBrowser = |
| { |
| + finder: |
| + { |
| + _resultListeners: [], |
| + searchString: null, |
| + caseSensitive: false, |
| + lastResult: null, |
| + |
| + _notifyResultListeners: function(result, findBackwards) |
| + { |
| + this.lastResult = result; |
| + for each (let listener in this._resultListeners) |
| + listener.onFindResult(result, findBackwards); |
| + }, |
| + |
| + fastFind: function(searchString, linksOnly, drawOutline) |
| + { |
| + this.searchString = searchString; |
| + let result = FilterSearch.search(this.searchString, 0, |
| + this.caseSensitive); |
| + this._notifyResultListeners(result, false); |
| + }, |
| + |
| + findAgain: function(findBackwards, linksOnly, drawOutline) |
| + { |
| + let result = FilterSearch.search(this.searchString, |
| + findBackwards ? -1 : 1, |
| + this.caseSensitive); |
| + this._notifyResultListeners(result, findBackwards); |
| + }, |
| + |
| + addResultListener: function(listener) |
| + { |
| + if (this._resultListeners.indexOf(listener) === -1) |
| + this._resultListeners.push(listener); |
| + }, |
| + |
| + removeResultListener: function(listener) |
| + { |
| + let index = this._resultListeners.indexOf(listener); |
| + if (index !== -1) |
| + this._resultListeners.splice(index, 1); |
| + }, |
| + |
| + // Irrelevant for us |
| + highlight: function(highlight, word) {}, |
| + enableSelection: function() {}, |
| + removeSelection: function() {}, |
| + focusContent: function() {}, |
| + keyPress: function() {} |
| + }, |
| + |
| + get _lastSearchString() |
| + { |
| + return this.finder.searchString; |
| + }, |
| + |
| + // This was used before Firefox 27 instead of the "finder" property. |
| fastFind: |
| { |
| - searchString: null, |
| + get searchString() |
| + { |
| + return FilterSearch.fakeBrowser.finder.searchString; |
| + }, |
| + |
| + set searchString(searchString) |
| + { |
| + FilterSearch.fakeBrowser.finder.searchString = searchString; |
| + }, |
| + |
| foundLink: null, |
| foundEditable: null, |
| - caseSensitive: false, |
| + |
| + get caseSensitive() |
| + { |
| + return FilterSearch.fakeBrowser.finder.caseSensitive; |
| + }, |
| + |
| + set caseSensitive(caseSensitive) |
| + { |
| + FilterSearch.fakeBrowser.finder.caseSensitive = caseSensitive; |
| + }, |
| + |
| get currentWindow() FilterSearch.fakeBrowser.contentWindow, |
| find: function(searchString, linksOnly) |
| { |
| - this.searchString = searchString; |
| - return FilterSearch.search(this.searchString, 0, this.caseSensitive); |
| + FilterSearch.fakeBrowser.finder.fastFind(searchString, linksOnly); |
| + return FilterSearch.fakeBrowser.finder.lastResult; |
| }, |
| findAgain: function(findBackwards, linksOnly) |
| { |
| - return FilterSearch.search(this.searchString, findBackwards ? -1 : 1, this.caseSensitive); |
| + FilterSearch.fakeBrowser.finder.findAgain(findBackwards, linksOnly); |
| + return FilterSearch.fakeBrowser.finder.lastResult; |
| }, |
| // Irrelevant for us |