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. 4 5 #ifndef CHROME_BROWSER_UI_VIEWS_BOOKMARKS_BOOKMARK_DRAG_DROP_VIEWS_H_ 6 #define CHROME_BROWSER_UI_VIEWS_BOOKMARKS_BOOKMARK_DRAG_DROP_VIEWS_H_ 7 8 class BookmarkNode; 9 struct BookmarkNodeData; 10 class Profile; 11 12 namespace content { 13 class BrowserContext; 14 } 15 16 namespace ui { 17 class DropTargetEvent; 18 } 19 20 namespace chrome { 21 22 // Returns the drag operations for the specified node. 23 int GetBookmarkDragOperation(content::BrowserContext* browser_context, 24 const BookmarkNode* node); 25 26 // Calculates the drop operation given |source_operations| and the ideal 27 // set of drop operations (|operations|). This prefers the following ordering: 28 // COPY, LINK then MOVE. 29 int GetPreferredBookmarkDropOperation(int source_operations, int operations); 30 31 // Returns the preferred drop operation on a bookmark menu/bar. 32 // |parent| is the parent node the drop is to occur on and |index| the index the 33 // drop is over. 34 int GetBookmarkDropOperation(Profile* profile, 35 const ui::DropTargetEvent& event, 36 const BookmarkNodeData& data, 37 const BookmarkNode* parent, 38 int index); 39 40 // Returns true if the bookmark data can be dropped on |drop_parent| at 41 // |index|. A drop from a separate profile is always allowed, where as 42 // a drop from the same profile is only allowed if none of the nodes in 43 // |data| are an ancestor of |drop_parent| and one of the nodes isn't already 44 // a child of |drop_parent| at |index|. 45 bool IsValidBookmarkDropLocation(Profile* profile, 46 const BookmarkNodeData& data, 47 const BookmarkNode* drop_parent, 48 int index); 49 50 } // namespace chrome 51 52 #endif // CHROME_BROWSER_UI_VIEWS_BOOKMARKS_BOOKMARK_DRAG_DROP_VIEWS_H_ 53