Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(233)

Side by Side Diff: sync/internal_api/test/test_entry_factory.cc

Issue 2130453004: [Sync] Move //sync to //components/sync. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase. Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 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 #include "sync/internal_api/public/test/test_entry_factory.h"
6
7 #include <stdint.h>
8
9 #include "sync/syncable/directory.h"
10 #include "sync/syncable/entry.h"
11 #include "sync/syncable/mutable_entry.h"
12 #include "sync/syncable/syncable_id.h"
13 #include "sync/syncable/syncable_read_transaction.h"
14 #include "sync/syncable/syncable_util.h"
15 #include "sync/syncable/syncable_write_transaction.h"
16 #include "sync/test/engine/test_id_factory.h"
17
18 using std::string;
19
20 namespace syncer {
21
22 using syncable::Id;
23 using syncable::MutableEntry;
24 using syncable::UNITTEST;
25 using syncable::WriteTransaction;
26
27 TestEntryFactory::TestEntryFactory(syncable::Directory *dir)
28 : directory_(dir), next_revision_(1) {
29 }
30
31 TestEntryFactory::~TestEntryFactory() { }
32
33 int64_t TestEntryFactory::CreateUnappliedNewItemWithParent(
34 const string& item_id,
35 const sync_pb::EntitySpecifics& specifics,
36 const string& parent_id) {
37 WriteTransaction trans(FROM_HERE, UNITTEST, directory_);
38 MutableEntry entry(&trans, syncable::CREATE_NEW_UPDATE_ITEM,
39 Id::CreateFromServerId(item_id));
40 DCHECK(entry.good());
41 entry.PutServerVersion(GetNextRevision());
42 entry.PutIsUnappliedUpdate(true);
43
44 entry.PutServerNonUniqueName(item_id);
45 entry.PutServerParentId(Id::CreateFromServerId(parent_id));
46 entry.PutServerIsDir(true);
47 entry.PutServerSpecifics(specifics);
48 return entry.GetMetahandle();
49 }
50
51 int64_t TestEntryFactory::CreateUnappliedNewBookmarkItemWithParent(
52 const string& item_id,
53 const sync_pb::EntitySpecifics& specifics,
54 const string& parent_id) {
55 WriteTransaction trans(FROM_HERE, UNITTEST, directory_);
56 MutableEntry entry(&trans, syncable::CREATE_NEW_UPDATE_ITEM,
57 Id::CreateFromServerId(item_id));
58 DCHECK(entry.good());
59 entry.PutServerVersion(GetNextRevision());
60 entry.PutIsUnappliedUpdate(true);
61
62 entry.PutServerNonUniqueName(item_id);
63 entry.PutServerParentId(Id::CreateFromServerId(parent_id));
64 entry.PutServerIsDir(true);
65 entry.PutServerSpecifics(specifics);
66
67 return entry.GetMetahandle();
68 }
69
70 int64_t TestEntryFactory::CreateUnappliedNewItem(
71 const string& item_id,
72 const sync_pb::EntitySpecifics& specifics,
73 bool is_unique) {
74 WriteTransaction trans(FROM_HERE, UNITTEST, directory_);
75 MutableEntry entry(&trans, syncable::CREATE_NEW_UPDATE_ITEM,
76 Id::CreateFromServerId(item_id));
77 DCHECK(entry.good());
78 entry.PutServerVersion(GetNextRevision());
79 entry.PutIsUnappliedUpdate(true);
80 entry.PutServerNonUniqueName(item_id);
81 entry.PutServerParentId(syncable::Id::GetRoot());
82 entry.PutServerIsDir(is_unique);
83 entry.PutServerSpecifics(specifics);
84 if (is_unique) { // For top-level nodes.
85 entry.PutUniqueServerTag(
86 ModelTypeToRootTag(GetModelTypeFromSpecifics(specifics)));
87 }
88 return entry.GetMetahandle();
89 }
90
91 void TestEntryFactory::CreateUnsyncedItem(const Id& item_id,
92 const Id& parent_id,
93 const string& name,
94 bool is_folder,
95 ModelType model_type,
96 int64_t* metahandle_out) {
97 if (is_folder) {
98 DCHECK_EQ(model_type, BOOKMARKS);
99 }
100
101 WriteTransaction trans(FROM_HERE, UNITTEST, directory_);
102
103 MutableEntry entry(&trans, syncable::CREATE, model_type, parent_id, name);
104 DCHECK(entry.good());
105 entry.PutId(item_id);
106 entry.PutBaseVersion(
107 item_id.ServerKnows() ? GetNextRevision() : 0);
108 entry.PutIsUnsynced(true);
109 entry.PutIsDir(is_folder);
110 entry.PutIsDel(false);
111 entry.PutParentId(parent_id);
112 sync_pb::EntitySpecifics default_specifics;
113 AddDefaultFieldValue(model_type, &default_specifics);
114 entry.PutSpecifics(default_specifics);
115
116 if (item_id.ServerKnows()) {
117 entry.PutServerSpecifics(default_specifics);
118 entry.PutServerIsDir(false);
119 entry.PutServerParentId(parent_id);
120 entry.PutServerIsDel(false);
121 }
122 if (metahandle_out)
123 *metahandle_out = entry.GetMetahandle();
124 }
125
126 int64_t TestEntryFactory::CreateUnappliedAndUnsyncedBookmarkItem(
127 const string& name) {
128 int64_t metahandle = 0;
129 CreateUnsyncedItem(
130 TestIdFactory::MakeServer(name), TestIdFactory::root(),
131 name, false, BOOKMARKS, &metahandle);
132
133 WriteTransaction trans(FROM_HERE, UNITTEST, directory_);
134 MutableEntry entry(&trans, syncable::GET_BY_HANDLE, metahandle);
135 if (!entry.good()) {
136 NOTREACHED();
137 return syncable::kInvalidMetaHandle;
138 }
139
140 entry.PutIsUnappliedUpdate(true);
141 entry.PutServerVersion(GetNextRevision());
142
143 return metahandle;
144 }
145
146 int64_t TestEntryFactory::CreateSyncedItem(const std::string& name,
147 ModelType model_type,
148 bool is_folder) {
149 WriteTransaction trans(FROM_HERE, UNITTEST, directory_);
150
151 syncable::Id parent_id(TestIdFactory::root());
152 syncable::Id item_id(TestIdFactory::MakeServer(name));
153 int64_t version = GetNextRevision();
154
155 MutableEntry entry(&trans, syncable::CREATE, model_type, parent_id, name);
156 if (!entry.good()) {
157 NOTREACHED();
158 return syncable::kInvalidMetaHandle;
159 }
160
161 entry.PutId(item_id);
162 entry.PutBaseVersion(version);
163 entry.PutIsUnsynced(false);
164 entry.PutNonUniqueName(name);
165 entry.PutIsDir(is_folder);
166 entry.PutIsDel(false);
167 entry.PutParentId(parent_id);
168
169 entry.PutServerVersion(GetNextRevision());
170 entry.PutIsUnappliedUpdate(false);
171 entry.PutServerNonUniqueName(name);
172 entry.PutServerParentId(parent_id);
173 entry.PutServerIsDir(is_folder);
174 entry.PutServerIsDel(false);
175 entry.PutServerSpecifics(entry.GetSpecifics());
176
177 return entry.GetMetahandle();
178 }
179
180 int64_t TestEntryFactory::CreateUnappliedRootNode(ModelType model_type) {
181 syncable::WriteTransaction trans(FROM_HERE, syncable::UNITTEST, directory_);
182 sync_pb::EntitySpecifics specifics;
183 AddDefaultFieldValue(model_type, &specifics);
184 syncable::Id node_id = TestIdFactory::MakeServer("xyz");
185 syncable::MutableEntry entry(&trans, syncable::CREATE_NEW_UPDATE_ITEM,
186 node_id);
187 DCHECK(entry.good());
188 // Make it look like sort of like a pending creation from the server.
189 // The SERVER_PARENT_ID and UNIQUE_CLIENT_TAG aren't quite right, but
190 // it's good enough for our purposes.
191 entry.PutServerVersion(1);
192 entry.PutIsUnappliedUpdate(true);
193 entry.PutServerIsDir(false);
194 entry.PutServerParentId(TestIdFactory::root());
195 entry.PutServerSpecifics(specifics);
196 entry.PutNonUniqueName("xyz");
197
198 return entry.GetMetahandle();
199 }
200
201 bool TestEntryFactory::SetServerSpecificsForItem(
202 int64_t meta_handle,
203 const sync_pb::EntitySpecifics specifics) {
204 WriteTransaction trans(FROM_HERE, UNITTEST, directory_);
205 MutableEntry entry(&trans, syncable::GET_BY_HANDLE, meta_handle);
206 if (!entry.good()) {
207 return false;
208 }
209 entry.PutServerSpecifics(specifics);
210 entry.PutIsUnappliedUpdate(true);
211 return true;
212 }
213
214 bool TestEntryFactory::SetLocalSpecificsForItem(
215 int64_t meta_handle,
216 const sync_pb::EntitySpecifics specifics) {
217 WriteTransaction trans(FROM_HERE, UNITTEST, directory_);
218 MutableEntry entry(&trans, syncable::GET_BY_HANDLE, meta_handle);
219 if (!entry.good()) {
220 return false;
221 }
222 entry.PutSpecifics(specifics);
223 entry.PutIsUnsynced(true);
224 return true;
225 }
226
227 const sync_pb::EntitySpecifics& TestEntryFactory::GetServerSpecificsForItem(
228 int64_t meta_handle) const {
229 syncable::ReadTransaction trans(FROM_HERE, directory_);
230 syncable::Entry entry(&trans, syncable::GET_BY_HANDLE, meta_handle);
231 DCHECK(entry.good());
232 return entry.GetServerSpecifics();
233 }
234
235 const sync_pb::EntitySpecifics& TestEntryFactory::GetLocalSpecificsForItem(
236 int64_t meta_handle) const {
237 syncable::ReadTransaction trans(FROM_HERE, directory_);
238 syncable::Entry entry(&trans, syncable::GET_BY_HANDLE, meta_handle);
239 DCHECK(entry.good());
240 return entry.GetSpecifics();
241 }
242
243 bool TestEntryFactory::SetServerAttachmentMetadataForItem(
244 int64_t meta_handle,
245 const sync_pb::AttachmentMetadata metadata) {
246 WriteTransaction trans(FROM_HERE, UNITTEST, directory_);
247 MutableEntry entry(&trans, syncable::GET_BY_HANDLE, meta_handle);
248 if (!entry.good()) {
249 return false;
250 }
251 entry.PutServerAttachmentMetadata(metadata);
252 entry.PutIsUnappliedUpdate(true);
253 return true;
254 }
255
256 bool TestEntryFactory::SetLocalAttachmentMetadataForItem(
257 int64_t meta_handle,
258 const sync_pb::AttachmentMetadata metadata) {
259 WriteTransaction trans(FROM_HERE, UNITTEST, directory_);
260 MutableEntry entry(&trans, syncable::GET_BY_HANDLE, meta_handle);
261 if (!entry.good()) {
262 return false;
263 }
264 entry.PutAttachmentMetadata(metadata);
265 entry.PutIsUnsynced(true);
266 return true;
267 }
268
269 const sync_pb::AttachmentMetadata&
270 TestEntryFactory::GetServerAttachmentMetadataForItem(
271 int64_t meta_handle) const {
272 syncable::ReadTransaction trans(FROM_HERE, directory_);
273 syncable::Entry entry(&trans, syncable::GET_BY_HANDLE, meta_handle);
274 DCHECK(entry.good());
275 return entry.GetServerAttachmentMetadata();
276 }
277
278 const sync_pb::AttachmentMetadata&
279 TestEntryFactory::GetLocalAttachmentMetadataForItem(int64_t meta_handle) const {
280 syncable::ReadTransaction trans(FROM_HERE, directory_);
281 syncable::Entry entry(&trans, syncable::GET_BY_HANDLE, meta_handle);
282 DCHECK(entry.good());
283 return entry.GetAttachmentMetadata();
284 }
285
286 bool TestEntryFactory::GetIsUnsyncedForItem(int64_t meta_handle) const {
287 syncable::ReadTransaction trans(FROM_HERE, directory_);
288 syncable::Entry entry(&trans, syncable::GET_BY_HANDLE, meta_handle);
289 if (!entry.good()) {
290 NOTREACHED();
291 return false;
292 }
293 return entry.GetIsUnsynced();
294 }
295
296 bool TestEntryFactory::GetIsUnappliedForItem(int64_t meta_handle) const {
297 syncable::ReadTransaction trans(FROM_HERE, directory_);
298 syncable::Entry entry(&trans, syncable::GET_BY_HANDLE, meta_handle);
299 if (!entry.good()) {
300 NOTREACHED();
301 return false;
302 }
303 return entry.GetIsUnappliedUpdate();
304 }
305
306 int64_t TestEntryFactory::GetNextRevision() {
307 return next_revision_++;
308 }
309
310 } // namespace syncer
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698