Chromium Code Reviews| Index: sync/internal_api/test/test_entry_factory.cc |
| diff --git a/sync/internal_api/test/test_entry_factory.cc b/sync/internal_api/test/test_entry_factory.cc |
| index 8e6b2b346c9383f6e8e95affaf80a8e87d67f568..3753b9970c48f4e0f3df7162301d36f95da593fb 100644 |
| --- a/sync/internal_api/test/test_entry_factory.cc |
| +++ b/sync/internal_api/test/test_entry_factory.cc |
| @@ -9,6 +9,7 @@ |
| #include "sync/syncable/mutable_entry.h" |
| #include "sync/syncable/syncable_id.h" |
| #include "sync/syncable/syncable_read_transaction.h" |
| +#include "sync/syncable/syncable_util.h" |
| #include "sync/syncable/syncable_write_transaction.h" |
| #include "sync/test/engine/test_id_factory.h" |
| @@ -45,6 +46,25 @@ int64 TestEntryFactory::CreateUnappliedNewItemWithParent( |
| return entry.Get(syncable::META_HANDLE); |
| } |
| +int64 TestEntryFactory::CreateUnappliedNewBookmarkItemWithParent( |
| + const string& item_id, |
| + const sync_pb::EntitySpecifics& specifics, |
| + const string& parent_id) { |
| + WriteTransaction trans(FROM_HERE, UNITTEST, directory_); |
| + MutableEntry entry(&trans, syncable::CREATE_NEW_UPDATE_ITEM, |
| + Id::CreateFromServerId(item_id)); |
| + DCHECK(entry.good()); |
| + entry.Put(syncable::SERVER_VERSION, GetNextRevision()); |
| + entry.Put(syncable::IS_UNAPPLIED_UPDATE, true); |
| + |
| + entry.Put(syncable::SERVER_NON_UNIQUE_NAME, item_id); |
| + entry.Put(syncable::SERVER_PARENT_ID, Id::CreateFromServerId(parent_id)); |
| + entry.Put(syncable::SERVER_IS_DIR, true); |
| + entry.Put(syncable::SERVER_SPECIFICS, specifics); |
| + |
| + return entry.Get(syncable::META_HANDLE); |
| +} |
| + |
| int64 TestEntryFactory::CreateUnappliedNewItem( |
| const string& item_id, |
| const sync_pb::EntitySpecifics& specifics, |
| @@ -73,11 +93,19 @@ void TestEntryFactory::CreateUnsyncedItem( |
| bool is_folder, |
| ModelType model_type, |
| int64* metahandle_out) { |
| + if (is_folder) { |
| + DCHECK_EQ(model_type, BOOKMARKS); |
| + } |
| + |
| WriteTransaction trans(FROM_HERE, UNITTEST, directory_); |
| + |
| Id predecessor_id; |
| - DCHECK( |
| - directory_->GetLastChildIdForTest(&trans, parent_id, &predecessor_id)); |
| - MutableEntry entry(&trans, syncable::CREATE, parent_id, name); |
| + if (model_type == BOOKMARKS) { |
| + DCHECK(directory_->GetLastChildIdForTest( |
| + &trans, parent_id, &predecessor_id)); |
| + } |
| + |
| + MutableEntry entry(&trans, syncable::CREATE, model_type, parent_id, name); |
| DCHECK(entry.good()); |
| entry.Put(syncable::ID, item_id); |
| entry.Put(syncable::BASE_VERSION, |
| @@ -86,13 +114,18 @@ void TestEntryFactory::CreateUnsyncedItem( |
| entry.Put(syncable::IS_DIR, is_folder); |
| entry.Put(syncable::IS_DEL, false); |
| entry.Put(syncable::PARENT_ID, parent_id); |
| - CHECK(entry.PutPredecessor(predecessor_id)); |
| sync_pb::EntitySpecifics default_specifics; |
| AddDefaultFieldValue(model_type, &default_specifics); |
| entry.Put(syncable::SPECIFICS, default_specifics); |
| + |
| + // Bookmarks get inserted at the end of the list. |
| + if (model_type == BOOKMARKS) { |
| + DCHECK(entry.PutPredecessor(predecessor_id)); |
|
rlarocque
2013/01/11 18:41:14
I bet this is the cause of the buildbot failures.
|
| + } |
| + |
| if (item_id.ServerKnows()) { |
| entry.Put(syncable::SERVER_SPECIFICS, default_specifics); |
| - entry.Put(syncable::SERVER_IS_DIR, is_folder); |
| + entry.Put(syncable::SERVER_IS_DIR, false); |
| entry.Put(syncable::SERVER_PARENT_ID, parent_id); |
| entry.Put(syncable::SERVER_IS_DEL, false); |
| } |
| @@ -100,13 +133,12 @@ void TestEntryFactory::CreateUnsyncedItem( |
| *metahandle_out = entry.Get(syncable::META_HANDLE); |
| } |
| -int64 TestEntryFactory::CreateUnappliedAndUnsyncedItem( |
| - const string& name, |
| - ModelType model_type) { |
| +int64 TestEntryFactory::CreateUnappliedAndUnsyncedBookmarkItem( |
| + const string& name) { |
| int64 metahandle = 0; |
| CreateUnsyncedItem( |
| TestIdFactory::MakeServer(name), TestIdFactory::root(), |
| - name, false, model_type, &metahandle); |
| + name, false, BOOKMARKS, &metahandle); |
| WriteTransaction trans(FROM_HERE, UNITTEST, directory_); |
| MutableEntry entry(&trans, syncable::GET_BY_HANDLE, metahandle); |
| @@ -129,10 +161,7 @@ int64 TestEntryFactory::CreateSyncedItem( |
| syncable::Id item_id(TestIdFactory::MakeServer(name)); |
| int64 version = GetNextRevision(); |
| - sync_pb::EntitySpecifics default_specifics; |
| - AddDefaultFieldValue(model_type, &default_specifics); |
| - |
| - MutableEntry entry(&trans, syncable::CREATE, parent_id, name); |
| + MutableEntry entry(&trans, syncable::CREATE, model_type, parent_id, name); |
| if (!entry.good()) { |
| NOTREACHED(); |
| return syncable::kInvalidMetaHandle; |
| @@ -146,20 +175,19 @@ int64 TestEntryFactory::CreateSyncedItem( |
| entry.Put(syncable::IS_DEL, false); |
| entry.Put(syncable::PARENT_ID, parent_id); |
| + // TODO(sync): Place bookmarks at the end of the list? |
| if (!entry.PutPredecessor(TestIdFactory::root())) { |
| NOTREACHED(); |
| return syncable::kInvalidMetaHandle; |
| } |
| - entry.Put(syncable::SPECIFICS, default_specifics); |
| entry.Put(syncable::SERVER_VERSION, GetNextRevision()); |
| - entry.Put(syncable::IS_UNAPPLIED_UPDATE, true); |
| - entry.Put(syncable::SERVER_NON_UNIQUE_NAME, "X"); |
| - entry.Put(syncable::SERVER_PARENT_ID, TestIdFactory::MakeServer("Y")); |
| + entry.Put(syncable::IS_UNAPPLIED_UPDATE, false); |
| + entry.Put(syncable::SERVER_NON_UNIQUE_NAME, name); |
| + entry.Put(syncable::SERVER_PARENT_ID, parent_id); |
| entry.Put(syncable::SERVER_IS_DIR, is_folder); |
| entry.Put(syncable::SERVER_IS_DEL, false); |
| - entry.Put(syncable::SERVER_SPECIFICS, default_specifics); |
| - entry.Put(syncable::SERVER_PARENT_ID, parent_id); |
| + entry.Put(syncable::SERVER_SPECIFICS, entry.Get(syncable::SPECIFICS)); |
| return entry.Get(syncable::META_HANDLE); |
| } |