Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / sync / internal_api / public / test / test_entry_factory.h
blob97ff25e418fb2acc310fab4cdfaa953e1aa166d1
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.
5 #ifndef SYNC_TEST_TEST_ENTRY_FACTORY_H_
6 #define SYNC_TEST_TEST_ENTRY_FACTORY_H_
8 #include <string>
10 #include "base/basictypes.h"
11 #include "sync/internal_api/public/base/model_type.h"
12 #include "sync/protocol/sync.pb.h"
14 namespace syncer {
16 namespace syncable {
17 class Directory;
18 class Id;
21 class TestEntryFactory {
22 public:
23 explicit TestEntryFactory(syncable::Directory* dir);
24 ~TestEntryFactory();
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);
32 int64 CreateUnappliedNewBookmarkItemWithParent(
33 const std::string& item_id,
34 const sync_pb::EntitySpecifics& specifics,
35 const std::string& parent_id);
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);
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);
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);
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);
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);
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);
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);
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;
88 // Looks up the item referenced by |meta_handle| and returns its specifics.
89 const sync_pb::EntitySpecifics& GetLocalSpecificsForItem(
90 int64 meta_handle) const;
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);
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);
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;
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;
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;
122 int64 GetNextRevision();
124 private:
125 syncable::Directory* directory_;
126 int64 next_revision_;
128 DISALLOW_COPY_AND_ASSIGN(TestEntryFactory);
131 } // namespace syncer
133 #endif // SYNC_TEST_TEST_ENTRY_FACTORY_H_