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

Unified Diff: chrome/browser/resources/bookmark_manager/js/bmm.js

Issue 8497008: Implement Bookmark All Tabs Dialog with WebUI. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/resources/bookmark_manager/js/bmm.js
diff --git a/chrome/browser/resources/bookmark_manager/js/bmm.js b/chrome/browser/resources/bookmark_manager/js/bmm.js
index f3d824aa768f24bdb7836de79dadcc8a74d81deb..1d64a0fb40675918198eef90f3707e4eeb10476d 100644
--- a/chrome/browser/resources/bookmark_manager/js/bmm.js
+++ b/chrome/browser/resources/bookmark_manager/js/bmm.js
@@ -63,10 +63,161 @@ cr.define('bmm', function() {
return loadSubtree('');
}
+ var bookmarkCache = {
+ /**
+ * Removes the cached item from both the list and tree lookups.
+ */
+ remove: function(id) {
+ var treeItem = bmm.treeLookup[id];
+ if (treeItem) {
+ var items = treeItem.items; // is an HTMLCollection
+ for (var i = 0, item; item = items[i]; i++) {
mazda 2011/11/09 04:49:43 for (var i = 0; i < items.length; ++i) {
yoshiki 2011/11/09 15:06:39 Done.
+ var bookmarkNode = item.bookmarkNode;
+ delete bmm.treeLookup[bookmarkNode.id];
+ }
+ delete bmm.treeLookup[id];
+ }
+ },
+
+ /**
+ * Updates the underlying bookmark node for the tree items and list items by
+ * querying the bookmark backend.
+ * @param {string} id The id of the node to update the children for.
+ * @param {Function=} opt_f A funciton to call when done.
+ */
+ updateChildren: function(id, opt_f) {
+ function updateItem(bookmarkNode) {
+ var treeItem = bmm.treeLookup[bookmarkNode.id];
+ if (treeItem) {
+ treeItem.bookmarkNode = bookmarkNode;
+ }
+ }
+
+ chrome.bookmarks.getChildren(id, function(children) {
+ if (children)
+ children.forEach(updateItem);
+
+ if (opt_f)
+ opt_f(children);
+ });
+ }
+ };
+
+ /**
+ * Called when the title of a bookmark changes.
+ * @param {string} id
+ * @param {!Object} changeInfo
+ */
+ function handleBookmarkChanged(id, changeInfo) {
+ if (bmm.tree)
+ bmm.tree.handleBookmarkChanged(id, changeInfo);
+ if (bmm.list)
+ bmm.list.handleBookmarkChanged(id, changeInfo);
+ }
+
+ /**
+ * Callback for when the user reorders by title.
+ * @param {string} id The id of the bookmark folder that was reordered.
+ * @param {!Object} reorderInfo The information about how the items where
+ * reordered.
+ */
+ function handleChildrenReordered(id, reorderInfo) {
+ if (bmm.tree)
+ bmm.tree.handleChildrenReordered(id, changeInfo);
+ if (bmm.list)
+ bmm.list.handleChildrenReordered(id, changeInfo);
+ bookmarkCache.updateChildren(id);
+ }
+
+ /**
+ * Callback for when a bookmark node is created.
+ * @param {string} id The id of the newly created bookmark node.
+ * @param {!Object} bookmarkNode The new bookmark node.
+ */
+ function handleCreated(id, bookmarkNode) {
+ // console.info('handleCreated', id, bookmarkNode);
mazda 2011/11/09 04:49:43 Please delete this.
yoshiki 2011/11/09 15:06:39 Done.
+ if (bmm.list)
+ bmm.list.handleCreated(id, bookmarkNode);
+ if (bmm.tree)
+ bmm.tree.handleCreated(id, bookmarkNode);
+ bookmarkCache.updateChildren(bookmarkNode.parentId);
+ }
+
+ function handleMoved(id, moveInfo) {
mazda 2011/11/09 04:49:43 Please add comment.
yoshiki 2011/11/09 15:06:39 Done.
+ // console.info('handleMoved', id, moveInfo);
mazda 2011/11/09 04:49:43 Please delete this.
yoshiki 2011/11/09 15:06:39 Done.
+ if (bmm.list)
+ bmm.list.handleMoved(id, moveInfo);
+ if (bmm.tree)
+ bmm.tree.handleMoved(id, moveInfo);
+
+ bookmarkCache.updateChildren(moveInfo.parentId);
+ if (moveInfo.parentId != moveInfo.oldParentId)
+ bookmarkCache.updateChildren(moveInfo.oldParentId);
+ }
+
+ function handleRemoved(id, removeInfo) {
mazda 2011/11/09 04:49:43 Please add comment.
yoshiki 2011/11/09 15:06:39 Done.
+ // console.info('handleRemoved', id, removeInfo);
mazda 2011/11/09 04:49:43 Please delete this.
yoshiki 2011/11/09 15:06:39 Done.
+ if (bmm.list)
+ bmm.list.handleRemoved(id, removeInfo);
+ if (bmm.tree)
+ bmm.tree.handleRemoved(id, removeInfo);
+
+ bookmarkCache.updateChildren(removeInfo.parentId);
+ bookmarkCache.remove(id);
+ }
+
+ function handleImportBegan() {
mazda 2011/11/09 04:49:43 Please add comment.
yoshiki 2011/11/09 15:06:39 Done.
+ chrome.bookmarks.onCreated.removeListener(handleCreated);
+ chrome.bookmarks.onChanged.removeListener(handleBookmarkChanged);
+ }
+
+ function handleImportEnded() {
mazda 2011/11/09 04:49:43 Please add comment.
yoshiki 2011/11/09 15:06:39 Done.
+ // When importing is done we reload the tree and the list.
+
+ function f() {
+ bmm.tree.removeEventListener('load', f);
+
+ chrome.bookmarks.onCreated.addListener(handleCreated);
+ chrome.bookmarks.onChanged.addListener(handleBookmarkChanged);
+
+ if (!bmm.list)
+ return;
+
+ if (bmm.list.selectImportedFolder) {
+ var otherBookmarks = bmm.tree.items[1].items;
+ var importedFolder = otherBookmarks[otherBookmarks.length - 1];
+ navigateTo(importedFolder.bookmarkId)
+ bmm.list.selectImportedFolder = false
+ } else {
+ bmm.list.reload();
+ }
+ }
+
+ if (bmm.tree) {
+ bmm.treeaddEventListener('load', f);
+ bmm.tree.reload();
+ }
+ }
+
+ /**
+ * Adds the listeners for the bookmark model change events.
+ */
+ function addBookmarkModelListeners() {
+ chrome.bookmarks.onChanged.addListener(handleBookmarkChanged);
+ chrome.bookmarks.onChildrenReordered.addListener(handleChildrenReordered);
+ chrome.bookmarks.onCreated.addListener(handleCreated);
+ chrome.bookmarks.onMoved.addListener(handleMoved);
+ chrome.bookmarks.onRemoved.addListener(handleRemoved);
+ chrome.bookmarks.onImportBegan.addListener(handleImportBegan);
+ chrome.bookmarks.onImportEnded.addListener(handleImportEnded);
+ };
+
return {
contains: contains,
isFolder: isFolder,
loadSubtree: loadSubtree,
- loadTree: loadTree
+ loadTree: loadTree,
+ addBookmarkModelListeners: addBookmarkModelListeners
};
+
mazda 2011/11/09 04:49:43 Unnecessary empty line.
yoshiki 2011/11/09 15:06:39 Done.
});

Powered by Google App Engine
This is Rietveld 408576698