// Copyright (c) 2010 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_BOOKMARK_MANAGER_API_H_ #define CHROME_BROWSER_EXTENSIONS_EXTENSION_BOOKMARK_MANAGER_API_H_ #pragma once #include "chrome/browser/bookmarks/bookmark_node_data.h" #include "chrome/browser/extensions/extension_bookmarks_module.h" #include "chrome/browser/extensions/extension_function.h" #include "content/browser/renderer_host/render_view_host_delegate.h" struct BookmarkNodeData; class ListValue; class Profile; class TabContents; // Class that handles the chrome.experimental.bookmarkManager events. class ExtensionBookmarkManagerEventRouter : public RenderViewHostDelegate::BookmarkDrag { public: ExtensionBookmarkManagerEventRouter(Profile* profile, TabContents* tab_contents); virtual ~ExtensionBookmarkManagerEventRouter(); // RenderViewHostDelegate::BookmarkDrag interface virtual void OnDragEnter(const BookmarkNodeData& data); virtual void OnDragOver(const BookmarkNodeData& data); virtual void OnDragLeave(const BookmarkNodeData& data); virtual void OnDrop(const BookmarkNodeData& data); // The bookmark drag and drop data. This gets set after a drop was done on // the page. This returns NULL if no data is available. const BookmarkNodeData* GetBookmarkNodeData(); // Clears the drag and drop data. void ClearBookmarkNodeData(); private: // Helper to actually dispatch an event to extension listeners. void DispatchEvent(const char* event_name, const ListValue* args); void DispatchDragEvent(const BookmarkNodeData& data, const char* event_name); Profile* profile_; TabContents* tab_contents_; BookmarkNodeData bookmark_drag_data_; DISALLOW_COPY_AND_ASSIGN(ExtensionBookmarkManagerEventRouter); }; class ClipboardBookmarkManagerFunction : public BookmarksFunction { protected: bool CopyOrCut(bool cut); }; class CopyBookmarkManagerFunction : public ClipboardBookmarkManagerFunction { public: // Override ClipboardBookmarkManagerFunction. virtual bool RunImpl(); private: DECLARE_EXTENSION_FUNCTION_NAME("experimental.bookmarkManager.copy"); }; class CutBookmarkManagerFunction : public ClipboardBookmarkManagerFunction { public: // Override ClipboardBookmarkManagerFunction. virtual bool RunImpl(); private: DECLARE_EXTENSION_FUNCTION_NAME("experimental.bookmarkManager.cut"); }; class PasteBookmarkManagerFunction : public BookmarksFunction { public: // Override BookmarksFunction. virtual bool RunImpl(); private: DECLARE_EXTENSION_FUNCTION_NAME("experimental.bookmarkManager.paste"); }; class CanPasteBookmarkManagerFunction : public BookmarksFunction { public: // Override BookmarksFunction. virtual bool RunImpl(); private: DECLARE_EXTENSION_FUNCTION_NAME("experimental.bookmarkManager.canPaste"); }; class SortChildrenBookmarkManagerFunction : public BookmarksFunction { public: // Override BookmarksFunction. virtual bool RunImpl(); private: DECLARE_EXTENSION_FUNCTION_NAME( "experimental.bookmarkManager.sortChildren"); }; class BookmarkManagerGetStringsFunction : public AsyncExtensionFunction { public: // Override AsyncExtensionFunction. virtual bool RunImpl(); private: DECLARE_EXTENSION_FUNCTION_NAME("experimental.bookmarkManager.getStrings"); }; class StartDragBookmarkManagerFunction : public BookmarksFunction { public: // Override BookmarksFunction. virtual bool RunImpl(); private: DECLARE_EXTENSION_FUNCTION_NAME("experimental.bookmarkManager.startDrag"); }; class DropBookmarkManagerFunction : public BookmarksFunction { public: virtual bool RunImpl(); private: DECLARE_EXTENSION_FUNCTION_NAME("experimental.bookmarkManager.drop"); }; class GetSubtreeBookmarkManagerFunction : public BookmarksFunction { public: // Override BookmarksFunction virtual bool RunImpl(); private: DECLARE_EXTENSION_FUNCTION_NAME("experimental.bookmarkManager.getSubtree"); }; #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_BOOKMARK_MANAGER_API_H_