Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: chrome/content/ui/filters-search.js

Issue 5938722247802880: Support the new findbar API (Closed)
Patch Set: Created March 5, 2014, 9:56 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/content/ui/filters-search.js
===================================================================
--- a/chrome/content/ui/filters-search.js
+++ b/chrome/content/ui/filters-search.js
@@ -27,7 +27,30 @@
init: function()
{
let findbar = E("findbar");
- findbar.browser = FilterSearch.fakeBrowser;
+
+ // The findbar API changed in Firefox 27, we still support the old one for
+ // backwards compatibility.
+ let oldFindBar = false;
+ try
+ {
+ Components.utils.import("resource://gre/modules/Finder.jsm", {});
+ }
+ catch (e)
+ {
+ oldFindBar = true;
+ }
Wladimir Palant 2014/03/06 13:20:51 Does this check make sense? From the look of it, t
Felix Dahlke 2014/03/10 22:19:56 Yeah, we can just use fakeBrowser instead of filte
+
+ if (oldFindBar)
+ findbar.browser = FilterSearch.fakeBrowser;
+ else
+ {
+ let container = document.getElementById("filtersContainer");
Wladimir Palant 2014/03/06 13:20:51 We have a shortcut function for that, E("filtersCo
Felix Dahlke 2014/03/10 22:19:56 Got rid of that code anyway.
+ container.finder = FilterSearch.finder;
+ findbar.browser = container;
+
+ // Without this, the initial search string will be "undefined"
+ findbar._findField.value = "";
Wladimir Palant 2014/03/06 13:20:51 That's a rather unreliable hack. Instead please ad
Felix Dahlke 2014/03/10 22:19:56 Done.
+ }
findbar.addEventListener("keypress", function(event)
{
@@ -129,28 +152,74 @@
};
/**
- * Fake browser implementation to make findbar widget happy - searches in
- * the filter list.
+ * Finder implementation that searches in the filter list.
*/
+FilterSearch.finder =
+{
+ searchString: null,
+ caseSensitive: false,
+
+ fastFind: function(searchString, linksOnly, drawOutline)
+ {
+ this.searchString = searchString;
+ FilterSearch.search(this.searchString, 0, this.caseSensitive);
Wladimir Palant 2014/03/06 13:20:51 The return value of the search function should not
Felix Dahlke 2014/03/10 22:19:56 Done.
+ },
+
+ findAgain: function(findBackwards, linksOnly, drawOutline)
+ {
+ FilterSearch.search(this.searchString, findBackwards ? -1 : 1,
+ this.caseSensitive);
+ },
+
+ // Irrelevant for us
+ addResultListener: function(listener) {},
+ removeResultListener: function(listener) {},
Wladimir Palant 2014/03/06 13:20:51 Actually, the listeners are not irrelevant - that'
Felix Dahlke 2014/03/10 22:19:56 Done.
+ highlight: function(highlight, word) {},
+ enableSelection: function() {},
+ focusContent: function() {}
Wladimir Palant 2014/03/06 13:20:51 What about removeSelection and keyPress? The latte
Felix Dahlke 2014/03/10 22:19:56 Neither is actually being called in practice, at l
Wladimir Palant 2014/03/13 11:40:01 Yes, we definitely need stubs at the very least -
Felix Dahlke 2014/03/18 15:51:50 Added stubs for removeSelection and keyPress. Judg
+};
+
+/**
+ * Fake browser implementation to make findbar widget happy - searches in
+ * the filter list.
+ */
FilterSearch.fakeBrowser =
{
fastFind:
{
- searchString: null,
+ get searchString()
+ {
+ return FilterSearch.finder.searchString;
+ },
+
+ set searchString(searchString)
+ {
+ FilterSearch.finder.searchString = searchString;
+ },
+
foundLink: null,
foundEditable: null,
- caseSensitive: false,
+
+ get caseSensitive()
+ {
+ return FilterSearch.finder.caseSensitive;
+ },
+
+ set caseSensitive(caseSensitive)
+ {
+ FilterSearch.finder.caseSensitive = caseSensitive;
+ },
+
get currentWindow() FilterSearch.fakeBrowser.contentWindow,
find: function(searchString, linksOnly)
{
- this.searchString = searchString;
- return FilterSearch.search(this.searchString, 0, this.caseSensitive);
+ FilterSearch.finder.fastFind(searchString, linksOnly);
},
Wladimir Palant 2014/03/06 13:20:51 How about: find: FilterSearch.finder.bind(Filte
Felix Dahlke 2014/03/10 22:19:56 Not relevant anymore since the code changed.
findAgain: function(findBackwards, linksOnly)
{
- return FilterSearch.search(this.searchString, findBackwards ? -1 : 1, this.caseSensitive);
+ FilterSearch.finder.findAgain(findBackwards, linksOnly);
},
// Irrelevant for us
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld