aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/completion.js19
1 files changed, 11 insertions, 8 deletions
diff --git a/lib/completion.js b/lib/completion.js
index 1f7aa2b8..fefa92fa 100644
--- a/lib/completion.js
+++ b/lib/completion.js
@@ -117,20 +117,23 @@ var completion = (function() {
/** A fuzzy bookmark completer */
var FuzzyBookmarkCompletionSource = AsyncCompletionSource.extend({
- traverseTree: function(bookmarks, results) {
- bookmarks.forEach(function(bookmark) {
+ // Traverses the bookmark hierarhcy and retuns a list of all bookmarks in the tree.
+ traverseBookmarkTree: function(bookmarks) {
+ var results = [];
+ var toVisit = bookmarks;
+ while (toVisit.length > 0) {
+ var bookmark = toVisit.shift();
results.push(bookmark);
- if (bookmark.children === undefined)
- return;
- this.traverseTree(bookmark.children, results);
- }.proxy(this));
+ if (bookmark.children)
+ toVisit.push.apply(toVisit, bookmark.children);
+ }
+ return results;
},
refresh: function() {
this.reset();
chrome.bookmarks.getTree(function(bookmarks) {
- var results = [];
- this.traverseTree(bookmarks, results);
+ var results = this.traverseBookmarkTree(bookmarks);
var validResults = results.filter(function(b) { return b.url !== undefined; });
var matches = validResults.map(
function(bookmark) { return this.createInternalMatch("bookmark", bookmark); }.proxy(this));