test_entry_factory.h revision 116680a4aac90f2aa7413d9095a592090648e557
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 SYNC_TEST_TEST_ENTRY_FACTORY_H_
6#define SYNC_TEST_TEST_ENTRY_FACTORY_H_
7
8#include <string>
9
10#include "base/basictypes.h"
11#include "sync/internal_api/public/base/model_type.h"
12#include "sync/protocol/sync.pb.h"
13
14namespace syncer {
15
16namespace syncable {
17class Directory;
18class Id;
19}
20
21class TestEntryFactory {
22 public:
23  explicit TestEntryFactory(syncable::Directory* dir);
24  ~TestEntryFactory();
25
26  // Create a new unapplied folder node with a parent.
27  int64 CreateUnappliedNewItemWithParent(
28      const std::string& item_id,
29      const sync_pb::EntitySpecifics& specifics,
30      const std::string& parent_id);
31
32  int64 CreateUnappliedNewBookmarkItemWithParent(
33      const std::string& item_id,
34      const sync_pb::EntitySpecifics& specifics,
35      const std::string& parent_id);
36
37  // Create a new unapplied update without a parent.
38  int64 CreateUnappliedNewItem(const std::string& item_id,
39                               const sync_pb::EntitySpecifics& specifics,
40                               bool is_unique);
41
42  // Create an unsynced unique_client_tag item in the database.  If item_id is a
43  // local ID, it will be treated as a create-new.  Otherwise, if it's a server
44  // ID, we'll fake the server data so that it looks like it exists on the
45  // server.  Returns the methandle of the created item in |metahandle_out| if
46  // not NULL.
47  void CreateUnsyncedItem(const syncable::Id& item_id,
48                          const syncable::Id& parent_id,
49                          const std::string& name,
50                          bool is_folder,
51                          ModelType model_type,
52                          int64* metahandle_out);
53
54  // Creates a bookmark that is both unsynced an an unapplied update.  Returns
55  // the metahandle of the created item.
56  int64 CreateUnappliedAndUnsyncedBookmarkItem(const std::string& name);
57
58  // Creates a unique_client_tag item that has neither IS_UNSYNED or
59  // IS_UNAPPLIED_UPDATE.  The item is known to both the server and client.
60  // Returns the metahandle of the created item.
61  int64 CreateSyncedItem(const std::string& name,
62                         ModelType model_type, bool is_folder);
63
64  // Creates a root node that IS_UNAPPLIED. Similar to what one would find in
65  // the database between the ProcessUpdates of an initial datatype configure
66  // cycle and the ApplyUpdates step of the same sync cycle.
67  int64 CreateUnappliedRootNode(ModelType model_type);
68
69  // Looks up the item referenced by |meta_handle|. If successful, overwrites
70  // the server specifics with |specifics|, sets
71  // IS_UNAPPLIED_UPDATES/IS_UNSYNCED appropriately, and returns true.
72  // Else, return false.
73  bool SetServerSpecificsForItem(int64 meta_handle,
74                                 const sync_pb::EntitySpecifics specifics);
75
76  // Looks up the item referenced by |meta_handle|. If successful, overwrites
77  // the local specifics with |specifics|, sets
78  // IS_UNAPPLIED_UPDATES/IS_UNSYNCED appropriately, and returns true.
79  // Else, return false.
80  bool SetLocalSpecificsForItem(int64 meta_handle,
81                                const sync_pb::EntitySpecifics specifics);
82
83  // Looks up the item referenced by |meta_handle| and returns its server
84  // specifics.
85  const sync_pb::EntitySpecifics& GetServerSpecificsForItem(
86      int64 meta_handle) const;
87
88  // Looks up the item referenced by |meta_handle| and returns its specifics.
89  const sync_pb::EntitySpecifics& GetLocalSpecificsForItem(
90      int64 meta_handle) const;
91
92  // Looks up the item referenced by |meta_handle|. If successful, overwrites
93  // the server attachment metadata with |metadata|, sets
94  // IS_UNAPPLIED_UPDATES/IS_UNSYNCED appropriately, and returns true.
95  // Else, return false.
96  bool SetServerAttachmentMetadataForItem(
97      int64 meta_handle,
98      const sync_pb::AttachmentMetadata metadata);
99
100  // Looks up the item referenced by |meta_handle|. If successful, overwrites
101  // the local attachment metadata with |metadata|, sets
102  // IS_UNAPPLIED_UPDATES/IS_UNSYNCED appropriately, and returns true.
103  // Else, return false.
104  bool SetLocalAttachmentMetadataForItem(
105      int64 meta_handle,
106      const sync_pb::AttachmentMetadata metadata);
107
108  // Looks up the item referenced by |meta_handle| and returns its server
109  // attachment metadata.
110  const sync_pb::AttachmentMetadata& GetServerAttachmentMetadataForItem(
111      int64 meta_handle) const;
112
113  // Looks up the item referenced by |meta_handle| and returns its attachment
114  // metadata.
115  const sync_pb::AttachmentMetadata& GetLocalAttachmentMetadataForItem(
116      int64 meta_handle) const;
117
118  // Getters for IS_UNSYNCED and IS_UNAPPLIED_UPDATE bit fields.
119  bool GetIsUnsyncedForItem(int64 meta_handle) const;
120  bool GetIsUnappliedForItem(int64 meta_handle) const;
121
122  int64 GetNextRevision();
123
124 private:
125  syncable::Directory* directory_;
126  int64 next_revision_;
127
128  DISALLOW_COPY_AND_ASSIGN(TestEntryFactory);
129};
130
131}  // namespace syncer
132
133#endif  // SYNC_TEST_TEST_ENTRY_FACTORY_H_
134