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_EXTENSIONS_EXTENSION_BOOKMARK_MANAGER_API_H_ 6#define CHROME_BROWSER_EXTENSIONS_EXTENSION_BOOKMARK_MANAGER_API_H_ 7#pragma once 8 9#include "chrome/browser/bookmarks/bookmark_node_data.h" 10#include "chrome/browser/extensions/extension_bookmarks_module.h" 11#include "chrome/browser/extensions/extension_function.h" 12#include "content/browser/renderer_host/render_view_host_delegate.h" 13 14struct BookmarkNodeData; 15class ListValue; 16class Profile; 17class TabContents; 18 19// Class that handles the chrome.experimental.bookmarkManager events. 20class ExtensionBookmarkManagerEventRouter 21 : public RenderViewHostDelegate::BookmarkDrag { 22 public: 23 ExtensionBookmarkManagerEventRouter(Profile* profile, 24 TabContents* tab_contents); 25 virtual ~ExtensionBookmarkManagerEventRouter(); 26 27 // RenderViewHostDelegate::BookmarkDrag interface 28 virtual void OnDragEnter(const BookmarkNodeData& data); 29 virtual void OnDragOver(const BookmarkNodeData& data); 30 virtual void OnDragLeave(const BookmarkNodeData& data); 31 virtual void OnDrop(const BookmarkNodeData& data); 32 33 // The bookmark drag and drop data. This gets set after a drop was done on 34 // the page. This returns NULL if no data is available. 35 const BookmarkNodeData* GetBookmarkNodeData(); 36 37 // Clears the drag and drop data. 38 void ClearBookmarkNodeData(); 39 40 private: 41 // Helper to actually dispatch an event to extension listeners. 42 void DispatchEvent(const char* event_name, const ListValue* args); 43 44 void DispatchDragEvent(const BookmarkNodeData& data, const char* event_name); 45 46 Profile* profile_; 47 TabContents* tab_contents_; 48 BookmarkNodeData bookmark_drag_data_; 49 50 DISALLOW_COPY_AND_ASSIGN(ExtensionBookmarkManagerEventRouter); 51}; 52 53class ClipboardBookmarkManagerFunction : public BookmarksFunction { 54 protected: 55 bool CopyOrCut(bool cut); 56}; 57 58class CopyBookmarkManagerFunction : public ClipboardBookmarkManagerFunction { 59 public: 60 // Override ClipboardBookmarkManagerFunction. 61 virtual bool RunImpl(); 62 63 private: 64 DECLARE_EXTENSION_FUNCTION_NAME("experimental.bookmarkManager.copy"); 65}; 66 67class CutBookmarkManagerFunction : public ClipboardBookmarkManagerFunction { 68 public: 69 // Override ClipboardBookmarkManagerFunction. 70 virtual bool RunImpl(); 71 72 private: 73 DECLARE_EXTENSION_FUNCTION_NAME("experimental.bookmarkManager.cut"); 74}; 75 76class PasteBookmarkManagerFunction : public BookmarksFunction { 77 public: 78 // Override BookmarksFunction. 79 virtual bool RunImpl(); 80 81 private: 82 DECLARE_EXTENSION_FUNCTION_NAME("experimental.bookmarkManager.paste"); 83}; 84 85class CanPasteBookmarkManagerFunction 86 : public BookmarksFunction { 87 public: 88 // Override BookmarksFunction. 89 virtual bool RunImpl(); 90 91 private: 92 DECLARE_EXTENSION_FUNCTION_NAME("experimental.bookmarkManager.canPaste"); 93}; 94 95class SortChildrenBookmarkManagerFunction 96 : public BookmarksFunction { 97 public: 98 // Override BookmarksFunction. 99 virtual bool RunImpl(); 100 101 private: 102 DECLARE_EXTENSION_FUNCTION_NAME( 103 "experimental.bookmarkManager.sortChildren"); 104}; 105 106class BookmarkManagerGetStringsFunction : public AsyncExtensionFunction { 107 public: 108 // Override AsyncExtensionFunction. 109 virtual bool RunImpl(); 110 111 private: 112 DECLARE_EXTENSION_FUNCTION_NAME("experimental.bookmarkManager.getStrings"); 113}; 114 115class StartDragBookmarkManagerFunction 116 : public BookmarksFunction { 117 public: 118 // Override BookmarksFunction. 119 virtual bool RunImpl(); 120 121 private: 122 DECLARE_EXTENSION_FUNCTION_NAME("experimental.bookmarkManager.startDrag"); 123}; 124 125class DropBookmarkManagerFunction : public BookmarksFunction { 126 public: 127 virtual bool RunImpl(); 128 129 private: 130 DECLARE_EXTENSION_FUNCTION_NAME("experimental.bookmarkManager.drop"); 131}; 132 133 134class GetSubtreeBookmarkManagerFunction : public BookmarksFunction { 135 public: 136 // Override BookmarksFunction 137 virtual bool RunImpl(); 138 139 private: 140 DECLARE_EXTENSION_FUNCTION_NAME("experimental.bookmarkManager.getSubtree"); 141}; 142 143#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_BOOKMARK_MANAGER_API_H_ 144