Home | History | Annotate | Download | only in bookmark_manager_private
      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