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 79e52fe9a9f68c6763da63ec6ee004d997f5a67f..4ab4c17dcbf5caa07a854ca98c5abec048311a01 100644 |
--- a/chrome/browser/resources/md_bookmarks/store.js |
+++ b/chrome/browser/resources/md_bookmarks/store.js |
@@ -45,6 +45,9 @@ var BookmarksStore = Polymer({ |
/** @type {Set<string>} */ |
searchResultSet_: Object, |
+ |
+ /** @type {Set<string>} */ |
+ selectedItemSet_: Object, |
}, |
/** @private {Object} */ |
@@ -54,6 +57,7 @@ var BookmarksStore = Polymer({ |
attached: function() { |
this.documentListeners_ = { |
'folder-open-changed': this.onFolderOpenChanged_.bind(this), |
+ 'remove-item': this.onItemRemoved_.bind(this), |
'search-term-changed': this.onSearchTermChanged_.bind(this), |
'select-item': this.onItemSelected_.bind(this), |
'selected-folder-changed': this.onSelectedFolderChanged_.bind(this), |
@@ -92,6 +96,7 @@ var BookmarksStore = Polymer({ |
this.rootNode = rootNode; |
this.idToNodeMap_ = {}; |
this.rootNode.path = 'rootNode'; |
+ this.selectedItemSet_ = new Set(); |
BookmarksStore.generatePaths(rootNode, 0); |
BookmarksStore.initNodes(this.rootNode, this.idToNodeMap_); |
@@ -187,6 +192,8 @@ var BookmarksStore = Polymer({ |
if (!this.displayedList) |
return; |
+ this.selectedItemSet_.clear(); |
+ |
for (var i = 0; i < this.displayedList.length; i++) { |
if (!this.displayedList[i].isSelectedItem) |
continue; |
@@ -252,6 +259,7 @@ var BookmarksStore = Polymer({ |
} |
for (var i = startIndex; i <= endIndex; i++) { |
this.set('displayedList.#' + i + '.isSelectedItem', true); |
+ this.selectedItemSet_.add(this.displayedList[i]); |
} |
}, |
@@ -263,6 +271,23 @@ var BookmarksStore = Polymer({ |
selectItem_: function(item) { |
this.anchorIndex_ = this.getIndexInList_(item); |
this.set('displayedList.#' + this.anchorIndex_ + '.isSelectedItem', true); |
+ this.selectedItemSet_.add(this.displayedList[this.anchorIndex_]); |
+ }, |
+ |
+ /** |
+ * @param {BookmarkTreeNode} item |
+ * @private |
+ */ |
+ removeSingleItem_: function(item) { |
+ if (item.url) { |
+ chrome.bookmarks.remove(item.id, function() { |
+ // TODO(jiaxi): Add toast later. |
+ }.bind(this)); |
+ } else { |
+ chrome.bookmarks.removeTree(item.id, function() { |
+ // TODO(jiaxi): Add toast later. |
+ }.bind(this)); |
+ } |
}, |
////////////////////////////////////////////////////////////////////////////// |
@@ -402,6 +427,20 @@ var BookmarksStore = Polymer({ |
else |
this.selectItem_(e.detail.item); |
}, |
+ |
+ /** |
+ * @param {CustomEvent} e |
+ * @private |
+ */ |
+ onItemRemoved_: function(e) { |
+ var item = /** BookmarkTreeNode */ (e.detail); |
+ if (this.selectedItemSet_.size == 1 || !item.isSelectedItem) { |
+ this.removeSingleItem_(item); |
+ } else { |
+ for (let item of this.selectedItemSet_) |
+ this.removeSingleItem_(item); |
+ } |
+ }, |
}); |
//////////////////////////////////////////////////////////////////////////////// |