Chromium Code Reviews| Index: chrome/browser/resources/md_bookmarks/dnd_manager.js |
| diff --git a/chrome/browser/resources/md_bookmarks/dnd_manager.js b/chrome/browser/resources/md_bookmarks/dnd_manager.js |
| index cbe61a67b9ff56bffde54f49609a41729a953586..bb2637e3bd8665d01dd073fa6e4c4825c724e491 100644 |
| --- a/chrome/browser/resources/md_bookmarks/dnd_manager.js |
| +++ b/chrome/browser/resources/md_bookmarks/dnd_manager.js |
| @@ -464,11 +464,24 @@ cr.define('bookmarks', function() { |
| // Complete the drag by moving all dragged items to the drop |
| // destination. |
| var dropInfo = this.calculateDropInfo_(this.dropDestination_); |
| - this.dragInfo_.dragData.elements.forEach((item) => { |
| - chrome.bookmarks.move(item.id, { |
| - parentId: dropInfo.parentId, |
| - index: dropInfo.index == -1 ? undefined : dropInfo.index |
| - }); |
| + var shouldHighlight = this.shouldHighlight_(this.dropDestination_); |
| + var dragElements = this.dragInfo_.dragData.elements; |
| + var completedMoves = 0; |
| + |
| + if (shouldHighlight) |
| + bookmarks.ApiListener.trackUpdatedItems(); |
| + |
| + dragElements.forEach((item) => { |
| + chrome.bookmarks.move( |
| + item.id, { |
| + parentId: dropInfo.parentId, |
| + index: dropInfo.index == -1 ? undefined : dropInfo.index |
| + }, |
| + function() { |
| + completedMoves += 1; |
| + if (shouldHighlight && completedMoves == dragElements.length) |
| + bookmarks.ApiListener.highlightUpdatedItems(); |
|
calamity
2017/07/26 05:36:06
optional: Consider using an array of PromiseResolv
tsergeant
2017/07/26 06:34:07
Done, it works out a little bit nicer.
|
| + }); |
| }); |
| } |
| @@ -521,10 +534,16 @@ cr.define('bookmarks', function() { |
| e.preventDefault(); |
| var dropInfo = this.calculateDropInfo_(this.dropDestination_); |
| - if (dropInfo.index != -1) |
| - chrome.bookmarkManagerPrivate.drop(dropInfo.parentId, dropInfo.index); |
| - else |
| - chrome.bookmarkManagerPrivate.drop(dropInfo.parentId); |
| + var index = dropInfo.index != -1 ? dropInfo.index : undefined; |
| + var shouldHighlight = this.shouldHighlight_(this.dropDestination_); |
| + |
| + if (shouldHighlight) |
| + bookmarks.ApiListener.trackUpdatedItems(); |
| + |
| + chrome.bookmarkManagerPrivate.drop( |
| + dropInfo.parentId, index, |
| + shouldHighlight ? bookmarks.ApiListener.highlightUpdatedItems : |
| + undefined); |
| } |
| this.clearDragData_(); |
| @@ -862,6 +881,15 @@ cr.define('bookmarks', function() { |
| return !this.dragInfo_.isDraggingChildBookmark(overElement.itemId); |
| }, |
| + /** |
| + * @param {DropDestination} dropDestination |
| + * @private |
| + */ |
| + shouldHighlight_: function(dropDestination) { |
| + return isBookmarkItem(dropDestination.element) || |
| + isBookmarkList(dropDestination.element); |
| + }, |
| + |
| /** @param {bookmarks.TimerProxy} timerProxy */ |
| setTimerProxyForTesting: function(timerProxy) { |
| this.timerProxy_ = timerProxy; |