• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2010 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_BOOKMARKS_BOOKMARK_PASTEBOARD_HELPER_MAC_H_
6 #define CHROME_BROWSER_BOOKMARKS_BOOKMARK_PASTEBOARD_HELPER_MAC_H_
7 #pragma once
8 
9 #include "base/file_path.h"
10 #include "chrome/browser/bookmarks/bookmark_node_data.h"
11 #include "ui/gfx/native_widget_types.h"
12 
13 // This set of functions lets C++ code interact with the cocoa pasteboard
14 // and dragging methods.
15 namespace bookmark_pasteboard_helper_mac {
16 
17 // Writes a set of bookmark elements from a profile to the general pasteboard.
18 // This should be used for copy/paste functions.
19 void WriteToClipboard(const std::vector<BookmarkNodeData::Element>& elements,
20                       FilePath::StringType profile_path);
21 
22 // Writes a set of bookmark elements from a profile to the dragging pasteboard
23 // for drag and drop functions.
24 void WriteToDragClipboard(
25     const std::vector<BookmarkNodeData::Element>& elements,
26     FilePath::StringType profile_path);
27 
28 // Reads a set of bookmark elements from the general copy/paste clipboard.
29 bool ReadFromClipboard(std::vector<BookmarkNodeData::Element>& elements,
30                        FilePath::StringType* profile_path);
31 
32 // Reads a set of bookmark elements from the drag and drop clipboard.
33 bool ReadFromDragClipboard(std::vector<BookmarkNodeData::Element>& elements,
34                            FilePath::StringType* profile_path);
35 
36 // Returns true if the general copy/paste pasteboard contains any sort of
37 // bookmark elements.  It currently does not consider a plaintext url a
38 // valid bookmark.
39 bool ClipboardContainsBookmarks();
40 
41 // Returns true if the dragging pasteboard contains any sort of bookmark
42 // elements.
43 bool DragClipboardContainsBookmarks();
44 
45 // Copies the bookmark nodes to the dragging pasteboard and initiates a
46 // drag from the specified view.  |view| must be a |TabContentsViewCocoa*|.
47 void StartDrag(Profile* profile, const std::vector<const BookmarkNode*>& nodes,
48                gfx::NativeView view);
49 
50 }
51 
52 #ifdef __OBJC__
53 @class NSString;
54 // Pasteboard type for dictionary containing bookmark structure consisting
55 // of individual bookmark nodes and/or bookmark folders.
56 extern "C" NSString* const kBookmarkDictionaryListPboardType;
57 #endif  // __OBJC__
58 
59 #endif  // CHROME_BROWSER_BOOKMARKS_BOOKMARK_PASTEBOARD_HELPER_MAC_H_
60