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;
16class ChromeBookmarkClient;
17
18// Helper functions.
19namespace extensions {
20namespace bookmark_api_helpers {
21
22// The returned value is owned by the caller.
23api::bookmarks::BookmarkTreeNode* GetBookmarkTreeNode(
24    ChromeBookmarkClient* client,
25    const BookmarkNode* node,
26    bool recurse,
27    bool only_folders);
28
29// Add a JSON representation of |node| to the JSON |nodes|.
30void AddNode(ChromeBookmarkClient* client,
31             const BookmarkNode* node,
32             std::vector<linked_ptr<api::bookmarks::BookmarkTreeNode> >* nodes,
33             bool recurse);
34
35void AddNodeFoldersOnly(ChromeBookmarkClient* client,
36                        const BookmarkNode* node,
37                        std::vector<linked_ptr<
38                            api::bookmarks::BookmarkTreeNode> >* nodes,
39                        bool recurse);
40
41bool RemoveNode(BookmarkModel* model,
42                ChromeBookmarkClient* client,
43                int64 id,
44                bool recursive,
45                std::string* error);
46
47// Get meta info from |node| and all it's children recursively.
48void GetMetaInfo(const BookmarkNode& node,
49                 base::DictionaryValue* id_to_meta_info_map);
50
51}  // namespace bookmark_api_helpers
52}  // namespace extensions
53
54#endif  // CHROME_BROWSER_EXTENSIONS_API_BOOKMARKS_BOOKMARK_API_HELPERS_H_
55