| 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 18506dd4c5fb23e050954454e0357013d7f97005..bdbcb2ebd10de8400a8af2ac44628d861266aede 100644
|
| --- a/chrome/browser/resources/md_bookmarks/store.js
|
| +++ b/chrome/browser/resources/md_bookmarks/store.js
|
| @@ -55,9 +55,14 @@ var BookmarksStore = 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:
|
| +
|
| /**
|
| * @param {BookmarkTreeNode} rootNode
|
| * @private
|
| @@ -72,35 +77,6 @@ var BookmarksStore = Polymer({
|
| },
|
|
|
| /**
|
| - * Selects the folder specified by the event and deselects the previously
|
| - * selected folder.
|
| - * @param {CustomEvent} e
|
| - * @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;
|
| - },
|
| -
|
| - /**
|
| - * 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);
|
| - },
|
| -
|
| - /**
|
| * @param {BookmarkTreeNode} folder
|
| * @private
|
| * @return {boolean}
|
| @@ -117,6 +93,26 @@ var BookmarksStore = Polymer({
|
| },
|
|
|
| /**
|
| + * 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:
|
| +
|
| + /**
|
| * 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,23 +132,53 @@ var BookmarksStore = Polymer({
|
| },
|
|
|
| /**
|
| - * Remove all descendants of a given node from the map.
|
| - * @param {string} id
|
| + * Called when the title of a bookmark changes.
|
| + * @param {string} id The id of changed bookmark node.
|
| + * @param {!Object} changeInfo
|
| + */
|
| + 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:
|
| +
|
| + /**
|
| + * Selects the folder specified by the event and deselects the previously
|
| + * selected folder.
|
| + * @param {CustomEvent} e
|
| * @private
|
| */
|
| - removeDescendantsFromMap_: function(id) {
|
| - var node = this.idToNodeMap_[id];
|
| - if (!node)
|
| - return;
|
| + onSelectedFolderChanged_: function(e) {
|
| + // Deselect the old folder if defined.
|
| + if (this.selectedId)
|
| + this.set(this.idToNodeMap_[this.selectedId].path + '.isSelected', false);
|
|
|
| - if (node.children) {
|
| - for (var i = 0; i < node.children.length; i++)
|
| - this.removeDescendantsFromMap_(node.children[i].id);
|
| - }
|
| - delete this.idToNodeMap_[id];
|
| + var selectedId = /** @type {string} */ (e.detail);
|
| + var newFolder = this.idToNodeMap_[selectedId];
|
| + this.set(newFolder.path + '.isSelected', true);
|
| + this.selectedId = selectedId;
|
| + },
|
| +
|
| + /**
|
| + * 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);
|
| },
|
| });
|
|
|
| +////////////////////////////////////////////////////////////////////////////////
|
| +// bookmarks-store, static methods:
|
| +
|
| /**
|
| * Stores the path from the store to a node inside the node.
|
| * @param {BookmarkTreeNode} bookmarkNode
|
|
|