| 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..e53c4582e6456d1f955130f2f050a3c59942dd4a 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,20 @@ 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) {
|
| + bool lookup_result = directory_->GetLastChildIdForTest(
|
| + &trans, parent_id, &predecessor_id);
|
| + DCHECK(lookup_result);
|
| + }
|
| +
|
| + 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 +115,19 @@ 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) {
|
| + bool put_result = entry.PutPredecessor(predecessor_id);
|
| + DCHECK(put_result);
|
| + }
|
| +
|
| 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 +135,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 +163,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 +177,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);
|
| }
|
|
|