Implement copy/paste of bookmarks for mac

Implements Copy, paste, and can paste as extension apis for use in the extension bookmark manager.

BUG=33461
TEST=Copy and paste single and multiple bookmarks in the extension bookmark manager, and between it safari's bookmark manager and plain text fields.

Review URL: http://codereview.chromium.org/562010

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@38286 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/bookmarks/bookmark_utils.cc b/chrome/browser/bookmarks/bookmark_utils.cc
index 816d6d8..a1723129 100644
--- a/chrome/browser/bookmarks/bookmark_utils.cc
+++ b/chrome/browser/bookmarks/bookmark_utils.cc
@@ -355,8 +355,6 @@
 void CopyToClipboard(BookmarkModel* model,
                      const std::vector<const BookmarkNode*>& nodes,
                      bool remove_nodes) {
-// Not implemented on mac yet.
-#if !defined(OS_MACOSX)
   if (nodes.empty())
     return;
 
@@ -368,14 +366,11 @@
                     nodes[i]->GetParent()->IndexOfChild(nodes[i]));
     }
   }
-#endif
 }
 
 void PasteFromClipboard(BookmarkModel* model,
                         const BookmarkNode* parent,
                         int index) {
-// Not implemented on mac yet.
-#if !defined(OS_MACOSX)
   if (!parent)
     return;
 
@@ -386,20 +381,12 @@
   if (index == -1)
     index = parent->GetChildCount();
   bookmark_utils::CloneDragData(model, bookmark_data.elements, parent, index);
-#endif
 }
 
 bool CanPasteFromClipboard(const BookmarkNode* node) {
   if (!node)
     return false;
-
-#if defined(OS_MACOSX)
-  NOTIMPLEMENTED();
-  return false;
-#else
-  return g_browser_process->clipboard()->IsFormatAvailableByString(
-      BookmarkDragData::kClipboardFormatString, Clipboard::BUFFER_STANDARD);
-#endif
+  return BookmarkDragData::ClipboardContainsBookmarks();
 }
 
 std::string GetNameForURL(const GURL& url) {