1// Copyright 2014 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 COMPONENTS_BOOKMARKS_TEST_TEST_BOOKMARK_CLIENT_H_
6#define COMPONENTS_BOOKMARKS_TEST_TEST_BOOKMARK_CLIENT_H_
7
8#include "base/memory/scoped_ptr.h"
9#include "components/bookmarks/browser/bookmark_client.h"
10
11class BookmarkModel;
12
13namespace bookmarks {
14
15class TestBookmarkClient : public BookmarkClient {
16 public:
17  TestBookmarkClient();
18  virtual ~TestBookmarkClient();
19
20  // Create a BookmarkModel using this object as its client. The returned
21  // BookmarkModel* is owned by the caller.
22  scoped_ptr<BookmarkModel> CreateModel();
23
24  // Sets the list of extra nodes to be returned by the next call to
25  // CreateModel() or GetLoadExtraNodesCallback().
26  void SetExtraNodesToLoad(BookmarkPermanentNodeList extra_nodes);
27
28  // Returns the current extra_nodes, set via SetExtraNodesToLoad().
29  const std::vector<BookmarkPermanentNode*>& extra_nodes() {
30    return extra_nodes_;
31  }
32
33  // Returns true if |node| is one of the |extra_nodes_|.
34  bool IsExtraNodeRoot(const BookmarkNode* node);
35
36  // Returns true if |node| belongs to the tree of one of the |extra_nodes_|.
37  bool IsAnExtraNode(const BookmarkNode* node);
38
39 private:
40  // BookmarkClient:
41  virtual bool IsPermanentNodeVisible(
42      const BookmarkPermanentNode* node) OVERRIDE;
43  virtual void RecordAction(const base::UserMetricsAction& action) OVERRIDE;
44  virtual LoadExtraCallback GetLoadExtraNodesCallback() OVERRIDE;
45  virtual bool CanSetPermanentNodeTitle(
46      const BookmarkNode* permanent_node) OVERRIDE;
47  virtual bool CanSyncNode(const BookmarkNode* node) OVERRIDE;
48  virtual bool CanBeEditedByUser(const BookmarkNode* node) OVERRIDE;
49
50  // Helpers for GetLoadExtraNodesCallback().
51  static BookmarkPermanentNodeList LoadExtraNodes(
52      BookmarkPermanentNodeList extra_nodes,
53      int64* next_id);
54
55  BookmarkPermanentNodeList extra_nodes_to_load_;
56  std::vector<BookmarkPermanentNode*> extra_nodes_;
57
58  DISALLOW_COPY_AND_ASSIGN(TestBookmarkClient);
59};
60
61}  // namespace bookmarks
62
63#endif  // COMPONENTS_BOOKMARKS_TEST_TEST_BOOKMARK_CLIENT_H_
64