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