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_BOOKMARKS_BOOKMARK_API_HELPERS_H_
6#define CHROME_BROWSER_EXTENSIONS_API_BOOKMARKS_BOOKMARK_API_HELPERS_H_
7
8#include <string>
9#include <vector>
10
11#include "base/basictypes.h"
12#include "chrome/common/extensions/api/bookmarks.h"
13
14class BookmarkModel;
15class BookmarkNode;
16
17// Helper functions.
18namespace extensions {
19namespace bookmark_api_helpers {
20
21// The returned value is owned by the caller.
22api::bookmarks::BookmarkTreeNode* GetBookmarkTreeNode(
23    const BookmarkNode* node,
24    bool recurse,
25    bool only_folders);
26
27// TODO(mwrosen): Remove this function once chrome.bookmarkManagerPrivate is
28// refactored to use the JSON schema compiler.
29base::DictionaryValue* GetNodeDictionary(const BookmarkNode* node,
30                                         bool recurse,
31                                         bool only_folders);
32
33// Add a JSON representation of |node| to the JSON |nodes|.
34void AddNode(const BookmarkNode* node,
35             std::vector<linked_ptr<api::bookmarks::BookmarkTreeNode> >* nodes,
36             bool recurse);
37
38void AddNodeFoldersOnly(const BookmarkNode* node,
39                        std::vector<linked_ptr<
40                            api::bookmarks::BookmarkTreeNode> >* nodes,
41                        bool recurse);
42
43// TODO(mwrosen): Remove this function once chrome.bookmarkManagerPrivate is
44// refactored to use the JSON schema compiler.
45void AddNode(const BookmarkNode* node,
46             base::ListValue* list,
47             bool recurse);
48
49// TODO(mwrosen): Remove this function once chrome.bookmarkManagerPrivate is
50// refactored to use the JSON schema compiler.
51void AddNodeFoldersOnly(const BookmarkNode* node,
52                        base::ListValue* list,
53                        bool recurse);
54
55bool RemoveNode(BookmarkModel* model,
56                int64 id,
57                bool recursive,
58                std::string* error);
59
60}  // namespace bookmark_api_helpers
61}  // namespace extensions
62
63#endif  // CHROME_BROWSER_EXTENSIONS_API_BOOKMARKS_BOOKMARK_API_HELPERS_H_
64