| Index: chrome/browser/ui/bookmarks/bookmark_drag_drop.cc
|
| diff --git a/chrome/browser/ui/bookmarks/bookmark_drag_drop.cc b/chrome/browser/ui/bookmarks/bookmark_drag_drop.cc
|
| index ba5f05d90d1b47a007218ad33c24be95889b1c3a..e5bc4e439f5348e9bd2af69deb9019034140bf8b 100644
|
| --- a/chrome/browser/ui/bookmarks/bookmark_drag_drop.cc
|
| +++ b/chrome/browser/ui/bookmarks/bookmark_drag_drop.cc
|
| @@ -8,6 +8,7 @@
|
| #include "chrome/browser/profiles/profile.h"
|
| #include "chrome/browser/undo/bookmark_undo_service.h"
|
| #include "chrome/browser/undo/bookmark_undo_service_factory.h"
|
| +#include "components/bookmarks/browser/bookmark_client.h"
|
| #include "components/bookmarks/browser/bookmark_model.h"
|
| #include "components/bookmarks/browser/bookmark_node_data.h"
|
| #include "components/bookmarks/browser/bookmark_utils.h"
|
| @@ -19,7 +20,8 @@ namespace chrome {
|
| int DropBookmarks(Profile* profile,
|
| const BookmarkNodeData& data,
|
| const BookmarkNode* parent_node,
|
| - int index) {
|
| + int index,
|
| + bool copy) {
|
| BookmarkModel* model = BookmarkModelFactory::GetForProfile(profile);
|
| #if !defined(OS_ANDROID)
|
| bookmarks::ScopedGroupBookmarkActions group_drops(model);
|
| @@ -27,13 +29,19 @@ int DropBookmarks(Profile* profile,
|
| if (data.IsFromProfilePath(profile->GetPath())) {
|
| const std::vector<const BookmarkNode*> dragged_nodes =
|
| data.GetNodes(model, profile->GetPath());
|
| + DCHECK(model->client()->CanBeEditedByUser(parent_node));
|
| + DCHECK(copy || model->client()->AllCanBeEditedByUser(dragged_nodes));
|
| if (!dragged_nodes.empty()) {
|
| - // Drag from same profile. Move nodes.
|
| + // Drag from same profile. Copy or move nodes.
|
| for (size_t i = 0; i < dragged_nodes.size(); ++i) {
|
| - model->Move(dragged_nodes[i], parent_node, index);
|
| + if (copy) {
|
| + model->Copy(dragged_nodes[i], parent_node, index);
|
| + } else {
|
| + model->Move(dragged_nodes[i], parent_node, index);
|
| + }
|
| index = parent_node->GetIndexOf(dragged_nodes[i]) + 1;
|
| }
|
| - return ui::DragDropTypes::DRAG_MOVE;
|
| + return copy ? ui::DragDropTypes::DRAG_COPY : ui::DragDropTypes::DRAG_MOVE;
|
| }
|
| return ui::DragDropTypes::DRAG_NONE;
|
| }
|
|
|