diff options
author | sky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-07 16:15:23 +0000 |
---|---|---|
committer | sky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-07 16:15:23 +0000 |
commit | 2892f19940a8dd68fba75a5d184c19f57bea418d (patch) | |
tree | b6ec2f1598bcfdcaebaa41c157b4f6bd7ab63f45 | |
parent | 8f0efc81f4590bc20a8acb8e2f3d131460ca1bd5 (diff) | |
download | chromium_src-2892f19940a8dd68fba75a5d184c19f57bea418d.zip chromium_src-2892f19940a8dd68fba75a5d184c19f57bea418d.tar.gz chromium_src-2892f19940a8dd68fba75a5d184c19f57bea418d.tar.bz2 |
Changes 'Open all' bookmarks to not recurse through nested folders.
BUG=20781
TEST=see bug
R=arv@chromium.org
Review URL: http://codereview.chromium.org/6801017
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@80787 0039d316-1c4b-4281-b951-d872f2087c98
3 files changed, 10 insertions, 217 deletions
diff --git a/chrome/browser/resources/bookmark_manager/js/bmm/tree_iterator.js b/chrome/browser/resources/bookmark_manager/js/bmm/tree_iterator.js deleted file mode 100644 index 042f24f..0000000 --- a/chrome/browser/resources/bookmark_manager/js/bmm/tree_iterator.js +++ /dev/null @@ -1,113 +0,0 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -cr.define('bmm', function() { - /** - * An inorder (document order) iterator for iterating over a bookmark tree. - * - * <pre> - * var it = new TreeIterator(node); - * while (it.moveNext()) { - * print(it.current.title); - * } - * </pre> - * - * @param {!BookmarkTreeNode} node The node to start at. - * @constructor - */ - function TreeIterator(node) { - this.current_ = node; - this.parentStack_ = []; - this.indexStack_ = []; - } - - /** - * Helper function for {@code TreeIterator.prototype.next}. This returns the - * next node in document order. - * @param {BookmarkTreeNode} node The current node. - * @param {!Array.<!BookmarkTreeNode>} parents A stack of parents. - * @param {!Array.<number>} index A stack of indexes. - * @return {BookmarkTreeNode} The next node or null if no more nodes can be - * found. - */ - function getNext(node, parents, index) { - var i, p; - - if (!node) - return null; - - // If the node has children return first child. - if (node.children && node.children.length) { - parents.push(node); - index.push(0); - return node.children[0]; - } - - if (!parents.length) - return null; - - // Walk up the parent stack until we find a node that has a next sibling. - while (node) { - p = parents[parents.length - 1]; - if (!p) - return null; - i = index[index.length - 1]; - if (i + 1 < p.children.length) - break; - node = parents.pop(); - index.pop(); - } - - // Walked out of subtree. - if (!parents.length || !node) - return null; - - // Return next child. - i = ++index[index.length - 1]; - p = parents[parents.length - 1]; - return p.children[i]; - } - - TreeIterator.prototype = { - /** - * Whether the next move will be the first move. - * @type {boolean} - * @private - */ - first_: true, - - /** - * Moves the iterator to the next item. - * @return {boolean} Whether we succeeded moving to the next item. This - * returns false when we have moved off the end of the iterator. - */ - moveNext: function() { - // The first call to this should move us to the first node. - if (this.first_) { - this.first_ = false; - return true; - } - this.current_ = getNext(this.current_, this.parentStack_, - this.indexStack_); - - return !!this.current_; - }, - - /** - * The current item. This throws an exception if trying to access after - * {@code moveNext} has returned false or before {@code moveNext} has been - * called. - * @type {!BookmarkTreeNode} - */ - get current() { - if (!this.current_ || this.first_) - throw Error('No such element'); - return this.current_; - } - }; - - return { - TreeIterator: TreeIterator - }; -}); diff --git a/chrome/browser/resources/bookmark_manager/js/bmm/tree_iterator_test.html b/chrome/browser/resources/bookmark_manager/js/bmm/tree_iterator_test.html deleted file mode 100644 index 543ef73..0000000 --- a/chrome/browser/resources/bookmark_manager/js/bmm/tree_iterator_test.html +++ /dev/null @@ -1,94 +0,0 @@ -<!DOCTYPE html> -<html> -<head> -<!-- TODO(arv): Check in Closue unit tests and make this run as part of the - tests --> -<script src="http://closure-library.googlecode.com/svn/trunk/closure/goog/base.js"></script> -<script src="../cr.js"></script> -<script src="treeiterator.js"></script> -<script> - -goog.require('goog.testing.jsunit'); - -</script> -</head> -<body> -<script> - -const TreeIterator = bmm.TreeIterator; - -var tree = { - id: 0, - children: [ - { - id: 1, - children: [ - {id: 2}, - {id: 3, children: []} - ] - }, - {id: 4}, - {id: 5} - ] -}; - -function testIteration() { - var it = new TreeIterator(tree); - var expextedIds = [0, 1, 2, 3, 4, 5]; - var i = 0; - while (it.moveNext()) { - var node = it.current; - assertEquals(expextedIds[i], node.id); - i++; - } -} - -function testIteration2() { - var it = new TreeIterator(tree.children[0]); - var expextedIds = [1, 2, 3]; - var i = 0; - while (it.moveNext()) { - var node = it.current; - assertEquals(expextedIds[i], node.id); - i++; - } -} - -function testIteration3() { - var it = new TreeIterator(tree.children[1]); - var expextedIds = [4]; - var i = 0; - while (it.moveNext()) { - var node = it.current; - assertEquals(expextedIds[i], node.id); - i++; - } -} - -function testThrowsAfterEnd() { - // Same as testIteration3 - var it = new TreeIterator(tree.children[1]); - var expextedIds = [4]; - var i = 0; - while (it.moveNext()) { - var node = it.current; - assertEquals(expextedIds[i], node.id); - i++; - } - - assertThrows(function() { - it.current; - }); -} - -function testThrowsBeforeMoveNext() { - // Same as testIteration3 - var it = new TreeIterator(tree); - assertThrows(function() { - it.current; - }); -} - -</script> -</body> -</html> diff --git a/chrome/browser/resources/bookmark_manager/main.html b/chrome/browser/resources/bookmark_manager/main.html index 556b7c7..4de6c54 100644 --- a/chrome/browser/resources/bookmark_manager/main.html +++ b/chrome/browser/resources/bookmark_manager/main.html @@ -45,7 +45,6 @@ found in the LICENSE file. <script src="chrome://resources/js/local_strings.js"></script> <script src="chrome://resources/js/i18n_template.js"></script> -<script src="js/bmm/tree_iterator.js"></script> <script src="js/bmm.js"></script> <script src="js/bmm/bookmark_list.js"></script> <script src="js/bmm/bookmark_tree.js"></script> @@ -1072,9 +1071,8 @@ function updateOpenCommands(e, command) { var multiple = selectionCount != 1 || isFolder; function hasBookmarks(node) { - var it = new bmm.TreeIterator(node); - while (it.moveNext()) { - if (!bmm.isFolder(it.current)) + for (var i = 0; i < node.children.length; i++) { + if (!bmm.isFolder(node.children[i])) return true; } return false; @@ -1449,13 +1447,15 @@ function openBookmarks(kind) { var urls = []; - // Adds the node and all the descendants + // Adds the node and all its children. function addNodes(node) { - var it = new bmm.TreeIterator(node); - while (it.moveNext()) { - var n = it.current; - if (!bmm.isFolder(n)) - urls.push(n.url); + if (node.children) { + node.children.forEach(function(child) { + if (!bmm.isFolder(child)) + urls.push(child.url); + }); + } else { + urls.push(node.url); } } |