1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef CHROME_BROWSER_UI_VIEWS_BOOKMARKS_BOOKMARK_DRAG_DROP_VIEWS_H_
6 #define CHROME_BROWSER_UI_VIEWS_BOOKMARKS_BOOKMARK_DRAG_DROP_VIEWS_H_
12 struct BookmarkNodeData;
20 class DropTargetEvent;
25 // Returns the drag operations for the specified node.
26 int GetBookmarkDragOperation(content::BrowserContext* browser_context,
27 const BookmarkNode* node);
29 // Calculates the drop operation given |source_operations| and the ideal
30 // set of drop operations (|operations|). This prefers the following ordering:
31 // COPY, LINK then MOVE.
32 int GetPreferredBookmarkDropOperation(int source_operations, int operations);
34 // Returns the preferred drop operation on a bookmark menu/bar.
35 // |parent| is the parent node the drop is to occur on and |index| the index the
37 int GetBookmarkDropOperation(Profile* profile,
38 const ui::DropTargetEvent& event,
39 const bookmarks::BookmarkNodeData& data,
40 const BookmarkNode* parent,
43 // Returns true if the bookmark data can be dropped on |drop_parent| at
44 // |index|. A drop from a separate profile is always allowed, where as
45 // a drop from the same profile is only allowed if none of the nodes in
46 // |data| are an ancestor of |drop_parent| and one of the nodes isn't already
47 // a child of |drop_parent| at |index|.
48 bool IsValidBookmarkDropLocation(Profile* profile,
49 const bookmarks::BookmarkNodeData& data,
50 const BookmarkNode* drop_parent,
55 #endif // CHROME_BROWSER_UI_VIEWS_BOOKMARKS_BOOKMARK_DRAG_DROP_VIEWS_H_