1 // Copyright (c) 2012 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_API_BOOKMARK_MANAGER_PRIVATE_BOOKMARK_MANAGER_PRIVATE_API_H_ 6 #define CHROME_BROWSER_EXTENSIONS_API_BOOKMARK_MANAGER_PRIVATE_BOOKMARK_MANAGER_PRIVATE_API_H_ 7 8 #include "base/values.h" 9 #include "chrome/browser/bookmarks/bookmark_node_data.h" 10 #include "chrome/browser/extensions/api/bookmarks/bookmarks_api.h" 11 #include "chrome/browser/extensions/extension_function.h" 12 #include "chrome/browser/ui/bookmarks/bookmark_tab_helper.h" 13 14 struct BookmarkNodeData; 15 class Profile; 16 17 namespace content { 18 class WebContents; 19 } 20 21 namespace extensions { 22 23 // Class that handles the chrome.bookmarkManagerPrivate events. 24 class BookmarkManagerPrivateEventRouter 25 : public BookmarkTabHelper::BookmarkDrag { 26 public: 27 BookmarkManagerPrivateEventRouter(Profile* profile, 28 content::WebContents* web_contents); 29 virtual ~BookmarkManagerPrivateEventRouter(); 30 31 // BookmarkTabHelper::BookmarkDrag interface 32 virtual void OnDragEnter(const BookmarkNodeData& data) OVERRIDE; 33 virtual void OnDragOver(const BookmarkNodeData& data) OVERRIDE; 34 virtual void OnDragLeave(const BookmarkNodeData& data) OVERRIDE; 35 virtual void OnDrop(const BookmarkNodeData& data) OVERRIDE; 36 37 // The bookmark drag and drop data. This gets set after a drop was done on 38 // the page. This returns NULL if no data is available. 39 const BookmarkNodeData* GetBookmarkNodeData(); 40 41 // Clears the drag and drop data. 42 void ClearBookmarkNodeData(); 43 44 private: 45 // Helper to actually dispatch an event to extension listeners. 46 void DispatchEvent(const char* event_name, 47 scoped_ptr<base::ListValue> args); 48 49 void DispatchDragEvent(const BookmarkNodeData& data, const char* event_name); 50 51 Profile* profile_; 52 content::WebContents* web_contents_; 53 BookmarkNodeData bookmark_drag_data_; 54 55 DISALLOW_COPY_AND_ASSIGN(BookmarkManagerPrivateEventRouter); 56 }; 57 58 class ClipboardBookmarkManagerFunction : public extensions::BookmarksFunction { 59 protected: 60 virtual ~ClipboardBookmarkManagerFunction() {} 61 62 bool CopyOrCut(bool cut, const std::vector<std::string>& id_list); 63 }; 64 65 class BookmarkManagerPrivateCopyFunction 66 : public ClipboardBookmarkManagerFunction { 67 public: 68 DECLARE_EXTENSION_FUNCTION("bookmarkManagerPrivate.copy", 69 BOOKMARKMANAGERPRIVATE_COPY) 70 71 protected: 72 virtual ~BookmarkManagerPrivateCopyFunction() {} 73 74 // ExtensionFunction: 75 virtual bool RunImpl() OVERRIDE; 76 }; 77 78 class BookmarkManagerPrivateCutFunction 79 : public ClipboardBookmarkManagerFunction { 80 public: 81 DECLARE_EXTENSION_FUNCTION("bookmarkManagerPrivate.cut", 82 BOOKMARKMANAGERPRIVATE_CUT) 83 84 protected: 85 virtual ~BookmarkManagerPrivateCutFunction() {} 86 87 // ExtensionFunction: 88 virtual bool RunImpl() OVERRIDE; 89 }; 90 91 class BookmarkManagerPrivatePasteFunction 92 : public extensions::BookmarksFunction { 93 public: 94 DECLARE_EXTENSION_FUNCTION("bookmarkManagerPrivate.paste", 95 BOOKMARKMANAGERPRIVATE_PASTE) 96 97 protected: 98 virtual ~BookmarkManagerPrivatePasteFunction() {} 99 100 // ExtensionFunction: 101 virtual bool RunImpl() OVERRIDE; 102 }; 103 104 class BookmarkManagerPrivateCanPasteFunction 105 : public extensions::BookmarksFunction { 106 public: 107 DECLARE_EXTENSION_FUNCTION("bookmarkManagerPrivate.canPaste", 108 BOOKMARKMANAGERPRIVATE_CANPASTE) 109 110 protected: 111 virtual ~BookmarkManagerPrivateCanPasteFunction() {} 112 113 // ExtensionFunction: 114 virtual bool RunImpl() OVERRIDE; 115 }; 116 117 class BookmarkManagerPrivateSortChildrenFunction 118 : public extensions::BookmarksFunction { 119 public: 120 DECLARE_EXTENSION_FUNCTION("bookmarkManagerPrivate.sortChildren", 121 BOOKMARKMANAGERPRIVATE_SORTCHILDREN) 122 123 protected: 124 virtual ~BookmarkManagerPrivateSortChildrenFunction() {} 125 126 // ExtensionFunction: 127 virtual bool RunImpl() OVERRIDE; 128 }; 129 130 class BookmarkManagerPrivateGetStringsFunction : public AsyncExtensionFunction { 131 public: 132 DECLARE_EXTENSION_FUNCTION("bookmarkManagerPrivate.getStrings", 133 BOOKMARKMANAGERPRIVATE_GETSTRINGS) 134 135 protected: 136 virtual ~BookmarkManagerPrivateGetStringsFunction() {} 137 138 // ExtensionFunction: 139 virtual bool RunImpl() OVERRIDE; 140 }; 141 142 class BookmarkManagerPrivateStartDragFunction 143 : public extensions::BookmarksFunction { 144 public: 145 DECLARE_EXTENSION_FUNCTION("bookmarkManagerPrivate.startDrag", 146 BOOKMARKMANAGERPRIVATE_STARTDRAG) 147 148 protected: 149 virtual ~BookmarkManagerPrivateStartDragFunction() {} 150 151 // ExtensionFunction: 152 virtual bool RunImpl() OVERRIDE; 153 }; 154 155 class BookmarkManagerPrivateDropFunction 156 : public extensions::BookmarksFunction { 157 public: 158 DECLARE_EXTENSION_FUNCTION("bookmarkManagerPrivate.drop", 159 BOOKMARKMANAGERPRIVATE_DROP) 160 161 protected: 162 virtual ~BookmarkManagerPrivateDropFunction() {} 163 164 // ExtensionFunction: 165 virtual bool RunImpl() OVERRIDE; 166 }; 167 168 class BookmarkManagerPrivateGetSubtreeFunction 169 : public extensions::BookmarksFunction { 170 public: 171 DECLARE_EXTENSION_FUNCTION("bookmarkManagerPrivate.getSubtree", 172 BOOKMARKMANAGERPRIVATE_GETSUBTREE) 173 174 protected: 175 virtual ~BookmarkManagerPrivateGetSubtreeFunction() {} 176 177 // ExtensionFunction: 178 virtual bool RunImpl() OVERRIDE; 179 }; 180 181 class BookmarkManagerPrivateCanEditFunction 182 : public extensions::BookmarksFunction { 183 public: 184 DECLARE_EXTENSION_FUNCTION("bookmarkManagerPrivate.canEdit", 185 BOOKMARKMANAGERPRIVATE_CANEDIT) 186 187 protected: 188 virtual ~BookmarkManagerPrivateCanEditFunction() {} 189 190 // ExtensionFunction: 191 virtual bool RunImpl() OVERRIDE; 192 }; 193 194 class BookmarkManagerPrivateRecordLaunchFunction 195 : public extensions::BookmarksFunction { 196 public: 197 DECLARE_EXTENSION_FUNCTION("bookmarkManagerPrivate.recordLaunch", 198 BOOKMARKMANAGERPRIVATE_RECORDLAUNCH) 199 200 protected: 201 virtual ~BookmarkManagerPrivateRecordLaunchFunction() {} 202 203 // ExtensionFunction: 204 virtual bool RunImpl() OVERRIDE; 205 }; 206 207 class BookmarkManagerPrivateCanOpenNewWindowsFunction 208 : public extensions::BookmarksFunction { 209 public: 210 DECLARE_EXTENSION_FUNCTION("bookmarkManagerPrivate.canOpenNewWindows", 211 BOOKMARKMANAGERPRIVATE_CANOPENNEWWINDOWS) 212 213 protected: 214 virtual ~BookmarkManagerPrivateCanOpenNewWindowsFunction() {} 215 216 // ExtensionFunction: 217 virtual bool RunImpl() OVERRIDE; 218 }; 219 220 class BookmarkManagerPrivateRemoveTreesFunction 221 : public extensions::BookmarksFunction { 222 public: 223 DECLARE_EXTENSION_FUNCTION("bookmarkManagerPrivate.removeTrees", 224 BOOKMARKMANAGERPRIVATE_REMOVETREES) 225 226 protected: 227 virtual ~BookmarkManagerPrivateRemoveTreesFunction() {} 228 229 // ExtensionFunction: 230 virtual bool RunImpl() OVERRIDE; 231 }; 232 233 } // namespace extensions 234 235 #endif // CHROME_BROWSER_EXTENSIONS_API_BOOKMARK_MANAGER_PRIVATE_BOOKMARK_MANAGER_PRIVATE_API_H_ 236