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

Unified Diff: chrome/browser/resources/md_bookmarks/store.js

Issue 2617943002: [MD Bookmarks] Edit Bookmarks. (Closed)
Patch Set: style fix Created 3 years, 11 months 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/md_bookmarks/store.js
diff --git a/chrome/browser/resources/md_bookmarks/store.js b/chrome/browser/resources/md_bookmarks/store.js
index f9f50c556ddfd879701828e344e0e274cd291c9c..c0693fe1556f2c73f0d3fd4a7ee52d938054dd8c 100644
--- a/chrome/browser/resources/md_bookmarks/store.js
+++ b/chrome/browser/resources/md_bookmarks/store.js
@@ -55,9 +55,14 @@ Polymer({
chrome.bookmarks.getTree(function(results) {
this.setupStore_(results[0]);
}.bind(this));
+ // Attach bookmarks API listeners.
chrome.bookmarks.onRemoved.addListener(this.onBookmarkRemoved_.bind(this));
+ chrome.bookmarks.onChanged.addListener(this.onBookmarkChanged_.bind(this));
},
+////////////////////////////////////////////////////////////////////////////////
+// bookmarks-store, private:
tsergeant 2017/01/09 00:21:05 👍 I like this lots
+
/**
* @param {BookmarkTreeNode} rootNode
* @private
@@ -72,32 +77,23 @@ Polymer({
},
/**
- * Selects the folder specified by the event and deselects the previously
- * selected folder.
- * @param {CustomEvent} e
+ * Initializes the nodes in the bookmarks tree as follows:
+ * - Populates |idToNodeMap_| with a mapping of all node ids to their
+ * corresponding BookmarkTreeNode.
+ * - Sets all the nodes to not selected and open by default.
+ * @param {BookmarkTreeNode} bookmarkNode
* @private
*/
- onSelectedFolderChanged_: function(e) {
- // Deselect the old folder if defined.
- if (this.selectedId)
- this.set(this.idToNodeMap_[this.selectedId].path + '.isSelected', false);
-
- var selectedId = /** @type {string} */ (e.detail);
- var newFolder = this.idToNodeMap_[selectedId];
- this.set(newFolder.path + '.isSelected', true);
- this.selectedId = selectedId;
- },
+ initNodes_: function(bookmarkNode) {
+ this.idToNodeMap_[bookmarkNode.id] = bookmarkNode;
+ if (bookmarkNode.url)
+ return;
- /**
- * Handles events that open and close folders.
- * @param {CustomEvent} e
- * @private
- */
- onFolderOpenChanged_: function(e) {
- var folder = this.idToNodeMap_[e.detail.id];
- this.set(folder.path + '.isOpen', e.detail.open);
- if (!folder.isOpen && this.isAncestorOfSelected_(folder))
- this.fire('selected-folder-changed', folder.id);
+ bookmarkNode.isSelected = false;
+ bookmarkNode.isOpen = true;
+ for (var i = 0; i < bookmarkNode.children.length; i++) {
+ this.initNodes_(bookmarkNode.children[i]);
+ }
},
/**
@@ -117,6 +113,43 @@ Polymer({
},
/**
+ * Stores the path from the store to a node inside the node.
+ * @param {BookmarkTreeNode} bookmarkNode
+ * @param {number} startIndex
+ * @private
+ */
+ generatePaths_: function(bookmarkNode, startIndex) {
+ if (!bookmarkNode.children)
+ return;
+
+ for (var i = startIndex; i < bookmarkNode.children.length; i++) {
+ bookmarkNode.children[i].path = bookmarkNode.path + '.children.#' + i;
+ this.generatePaths_(bookmarkNode.children[i], 0);
+ }
+ },
+
+ /**
+ * Remove all descendants of a given node from the map.
+ * @param {string} id
+ * @private
+ */
+ removeDescendantsFromMap_: function(id) {
+ var node = this.idToNodeMap_[id];
+ if (!node)
+ return;
+
+ if (node.children) {
+ for (var i = 0; i < node.children.length; i++)
+ this.removeDescendantsFromMap_(node.children[i].id);
+ }
+ delete this.idToNodeMap_[id];
+ },
+
+////////////////////////////////////////////////////////////////////////////////
+// bookmarks-store, bookmarks API event listeners:
+
tsergeant 2017/01/09 00:21:04 Just one blank line here
jiaxi 2017/01/09 02:17:46 Done.
+
+ /**
* Callback for when a bookmark node is removed.
* If a folder is selected or is an ancestor of a selected folder, the parent
* of the removed folder will be selected.
@@ -136,55 +169,46 @@ Polymer({
},
/**
- * Initializes the nodes in the bookmarks tree as follows:
- * - Populates |idToNodeMap_| with a mapping of all node ids to their
- * corresponding BookmarkTreeNode.
- * - Sets all the nodes to not selected and open by default.
- * @param {BookmarkTreeNode} bookmarkNode
- * @private
+ * Called when the title of a bookmark changes.
+ * @param {string} id The id of changed bookmark node.
+ * @param {!Object} changeInfo
*/
- initNodes_: function(bookmarkNode) {
- this.idToNodeMap_[bookmarkNode.id] = bookmarkNode;
- if (bookmarkNode.url)
- return;
-
- bookmarkNode.isSelected = false;
- bookmarkNode.isOpen = true;
- for (var i = 0; i < bookmarkNode.children.length; i++) {
- this.initNodes_(bookmarkNode.children[i]);
- }
+ onBookmarkChanged_: function(id, changeInfo) {
+ if (changeInfo.title)
+ this.set(this.idToNodeMap_[id].path + '.title', changeInfo.title);
+ if (changeInfo.url)
+ this.set(this.idToNodeMap_[id].path + '.url', changeInfo.url);
},
+////////////////////////////////////////////////////////////////////////////////
+// bookmarks-store, bookmarks app event listeners:
+
/**
- * Stores the path from the store to a node inside the node.
- * @param {BookmarkTreeNode} bookmarkNode
- * @param {number} startIndex
+ * Selects the folder specified by the event and deselects the previously
+ * selected folder.
+ * @param {CustomEvent} e
* @private
*/
- generatePaths_: function(bookmarkNode, startIndex) {
- if (!bookmarkNode.children)
- return;
+ onSelectedFolderChanged_: function(e) {
+ // Deselect the old folder if defined.
+ if (this.selectedId)
+ this.set(this.idToNodeMap_[this.selectedId].path + '.isSelected', false);
- for (var i = startIndex; i < bookmarkNode.children.length; i++) {
- bookmarkNode.children[i].path = bookmarkNode.path + '.children.#' + i;
- this.generatePaths_(bookmarkNode.children[i], 0);
- }
+ var selectedId = /** @type {string} */ (e.detail);
+ var newFolder = this.idToNodeMap_[selectedId];
+ this.set(newFolder.path + '.isSelected', true);
+ this.selectedId = selectedId;
},
/**
- * Remove all descendants of a given node from the map.
- * @param {string} id
+ * Handles events that open and close folders.
+ * @param {CustomEvent} e
* @private
*/
- removeDescendantsFromMap_: function(id) {
- var node = this.idToNodeMap_[id];
- if (!node)
- return;
-
- if (node.children) {
- for (var i = 0; i < node.children.length; i++)
- this.removeDescendantsFromMap_(node.children[i].id);
- }
- delete this.idToNodeMap_[id];
- }
+ onFolderOpenChanged_: function(e) {
+ var folder = this.idToNodeMap_[e.detail.id];
+ this.set(folder.path + '.isOpen', e.detail.open);
+ if (!folder.isOpen && this.isAncestorOfSelected_(folder))
+ this.fire('selected-folder-changed', folder.id);
+ },
});

Powered by Google App Engine
This is Rietveld 408576698