1edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project// Copyright 2013 The Chromium Authors. All rights reserved.
2edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project// Use of this source code is governed by a BSD-style license that can be
3edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project// found in the LICENSE file.
4edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project
5edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#ifndef CHROME_BROWSER_UI_VIEWS_BOOKMARKS_BOOKMARK_DRAG_DROP_VIEWS_H_
6edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#define CHROME_BROWSER_UI_VIEWS_BOOKMARKS_BOOKMARK_DRAG_DROP_VIEWS_H_
7edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project
8edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectclass BookmarkNode;
9edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectclass Profile;
10edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project
11edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectnamespace bookmarks {
12edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectstruct BookmarkNodeData;
13edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project}
14edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project
15edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectnamespace content {
16edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectclass BrowserContext;
17edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project}
18edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project
19edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectnamespace ui {
20edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectclass DropTargetEvent;
21edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project}
22edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project
23edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectnamespace chrome {
24edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project
25edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project// Returns the drag operations for the specified node.
26edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectint GetBookmarkDragOperation(content::BrowserContext* browser_context,
27edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project                             const BookmarkNode* node);
28edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project
29edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project// Calculates the drop operation given |source_operations| and the ideal
30edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project// set of drop operations (|operations|). This prefers the following ordering:
31edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project// COPY, LINK then MOVE.
32edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectint GetPreferredBookmarkDropOperation(int source_operations, int operations);
33edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project
34edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project// Returns the preferred drop operation on a bookmark menu/bar.
35edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project// |parent| is the parent node the drop is to occur on and |index| the index the
36edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project// drop is over.
37edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectint GetBookmarkDropOperation(Profile* profile,
38edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project                             const ui::DropTargetEvent& event,
39edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project                             const bookmarks::BookmarkNodeData& data,
40edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project                             const BookmarkNode* parent,
41edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project                             int index);
42edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project
43edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project// Returns true if the bookmark data can be dropped on |drop_parent| at
44edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project// |index|. A drop from a separate profile is always allowed, where as
45edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project// a drop from the same profile is only allowed if none of the nodes in
46edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project// |data| are an ancestor of |drop_parent| and one of the nodes isn't already
47edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project// a child of |drop_parent| at |index|.
48edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectbool IsValidBookmarkDropLocation(Profile* profile,
49edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project                                 const bookmarks::BookmarkNodeData& data,
50edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project                                 const BookmarkNode* drop_parent,
51edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project                                 int index);
52edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project
53edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project}  // namespace chrome
54edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project
55edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#endif  // CHROME_BROWSER_UI_VIEWS_BOOKMARKS_BOOKMARK_DRAG_DROP_VIEWS_H_
56edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project