chromium/chrome/browser/extensions/api/bookmark_manager_private/bookmark_manager_private_api.h

// Copyright 2012 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CHROME_BROWSER_EXTENSIONS_API_BOOKMARK_MANAGER_PRIVATE_BOOKMARK_MANAGER_PRIVATE_API_H_
#define CHROME_BROWSER_EXTENSIONS_API_BOOKMARK_MANAGER_PRIVATE_BOOKMARK_MANAGER_PRIVATE_API_H_

#include <memory>
#include <string>
#include <vector>

#include "base/memory/raw_ptr.h"
#include "base/values.h"
#include "chrome/browser/extensions/api/bookmarks_core/bookmarks_function.h"
#include "chrome/browser/ui/bookmarks/bookmark_tab_helper.h"
#include "chrome/browser/undo/bookmark_undo_service_factory.h"
#include "components/bookmarks/browser/base_bookmark_model_observer.h"
#include "components/bookmarks/browser/bookmark_node_data.h"
#include "components/undo/bookmark_undo_service.h"
#include "content/public/browser/web_contents_user_data.h"
#include "extensions/browser/browser_context_keyed_api_factory.h"
#include "extensions/browser/event_router.h"
#include "extensions/browser/extension_function.h"
#include "ui/shell_dialogs/select_file_dialog.h"

class Profile;

namespace bookmarks {
struct BookmarkNodeData;
}

namespace content {
class BrowserContext;
class WebContents;
}

namespace extensions {

class BookmarkManagerPrivateEventRouter
    : public bookmarks::BaseBookmarkModelObserver {};

class BookmarkManagerPrivateAPI : public BrowserContextKeyedAPI,
                                  public EventRouter::Observer {};

// Class that handles the drag and drop related chrome.bookmarkManagerPrivate
// events. This class has one instance per bookmark manager tab.
class BookmarkManagerPrivateDragEventRouter
    : public BookmarkTabHelper::BookmarkDrag,
      public content::WebContentsUserData<
          BookmarkManagerPrivateDragEventRouter> {};

class ClipboardBookmarkManagerFunction : public extensions::BookmarksFunction {};

class BookmarkManagerPrivateCopyFunction
    : public ClipboardBookmarkManagerFunction {};

class BookmarkManagerPrivateCutFunction
    : public ClipboardBookmarkManagerFunction {};

class BookmarkManagerPrivatePasteFunction
    : public extensions::BookmarksFunction {};

class BookmarkManagerPrivateCanPasteFunction
    : public extensions::BookmarksFunction {};

class BookmarkManagerPrivateSortChildrenFunction
    : public extensions::BookmarksFunction {};

class BookmarkManagerPrivateStartDragFunction
    : public extensions::BookmarksFunction {};

class BookmarkManagerPrivateDropFunction
    : public extensions::BookmarksFunction {};

class BookmarkManagerPrivateGetSubtreeFunction
    : public extensions::BookmarksFunction {};

class BookmarkManagerPrivateRemoveTreesFunction
    : public extensions::BookmarksFunction {};

class BookmarkManagerPrivateUndoFunction
    : public extensions::BookmarksFunction {};

class BookmarkManagerPrivateRedoFunction
    : public extensions::BookmarksFunction {};

class BookmarkManagerPrivateOpenInNewTabFunction
    : public extensions::BookmarksFunction {};

class BookmarkManagerPrivateOpenInNewWindowFunction
    : public extensions::BookmarksFunction {};

class BookmarkManagerPrivateIOFunction : public BookmarksFunction,
                                         public ui::SelectFileDialog::Listener {};

class BookmarkManagerPrivateImportFunction
    : public BookmarkManagerPrivateIOFunction {};

class BookmarkManagerPrivateExportFunction
    : public BookmarkManagerPrivateIOFunction {};

}  // namespace extensions

#endif  // CHROME_BROWSER_EXTENSIONS_API_BOOKMARK_MANAGER_PRIVATE_BOOKMARK_MANAGER_PRIVATE_API_H_