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. 15namespace 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. 19void 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. 24void 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. 29bool 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. 33bool 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. 39bool ClipboardContainsBookmarks(); 40 41// Returns true if the dragging pasteboard contains any sort of bookmark 42// elements. 43bool 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*|. 47void 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. 56extern "C" NSString* const kBookmarkDictionaryListPboardType; 57#endif // __OBJC__ 58 59#endif // CHROME_BROWSER_BOOKMARKS_BOOKMARK_PASTEBOARD_HELPER_MAC_H_ 60