summaryrefslogtreecommitdiffstats
path: root/sync
diff options
context:
space:
mode:
authorrlarocque@chromium.org <rlarocque@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-21 03:35:01 +0000
committerrlarocque@chromium.org <rlarocque@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-21 03:35:01 +0000
commitd2bf7c111653ced8f75a4b65b8e934c29b3bd616 (patch)
tree5073f0427ae26dd6066f72ca88fb8862ec278792 /sync
parent05858d4bb805ce257d49da6dc62fe62303f5eb9b (diff)
downloadchromium_src-d2bf7c111653ced8f75a4b65b8e934c29b3bd616.zip
chromium_src-d2bf7c111653ced8f75a4b65b8e934c29b3bd616.tar.gz
chromium_src-d2bf7c111653ced8f75a4b65b8e934c29b3bd616.tar.bz2
Add originator_* fields to mock connection tests
The upcoming UniquePositions patch will rely on the originator_cache_guid and originator_client_item_id fields which are sent down on the GetUpdate response. This commit updates many of the tests that use the MockServerConnectionManager to provide mock values of those fields. Their values will be ignored for now, but committing this early will make the UniquePositions patch smaller. A few of the tests involved nodes that were bookmarks and also had non-NULL unique_client_tag values. Such items do not exist outside of tests, and much of the code doesn't know how to handle them properly. To avoid having to assign origiantor_client_item_ids and originator_cache_guid values to these items (which would make them even more unrealistic), the tests were modified to use preference nodes instead of bookmarks. BUG=145412 Review URL: https://chromiumcodereview.appspot.com/12326018 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@183732 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'sync')
-rw-r--r--sync/engine/syncer_unittest.cc690
-rw-r--r--sync/test/engine/mock_connection_manager.cc109
-rw-r--r--sync/test/engine/mock_connection_manager.h85
3 files changed, 583 insertions, 301 deletions
diff --git a/sync/engine/syncer_unittest.cc b/sync/engine/syncer_unittest.cc
index 37d127e..b85f652 100644
--- a/sync/engine/syncer_unittest.cc
+++ b/sync/engine/syncer_unittest.cc
@@ -447,6 +447,14 @@ class SyncerTest : public testing::Test,
return dir_maker_.directory();
}
+ const std::string local_cache_guid() {
+ return directory()->cache_guid();
+ }
+
+ const std::string foreign_cache_guid() {
+ return "kqyg7097kro6GSUod+GSg==";
+ }
+
int64 CreateUnsyncedDirectory(const string& entry_name,
const string& idstring) {
return CreateUnsyncedDirectory(entry_name,
@@ -591,8 +599,10 @@ TEST_F(SyncerTest, TestCallGatherUnsyncedEntries) {
TEST_F(SyncerTest, GetCommitIdsCommandTruncates) {
syncable::Id root = ids_.root();
// Create two server entries.
- mock_server_->AddUpdateDirectory(ids_.MakeServer("x"), root, "X", 10, 10);
- mock_server_->AddUpdateDirectory(ids_.MakeServer("w"), root, "W", 10, 10);
+ mock_server_->AddUpdateDirectory(ids_.MakeServer("x"), root, "X", 10, 10,
+ foreign_cache_guid(), "-1");
+ mock_server_->AddUpdateDirectory(ids_.MakeServer("w"), root, "W", 10, 10,
+ foreign_cache_guid(), "-2");
SyncShareNudge();
// Create some new client entries.
@@ -646,7 +656,8 @@ TEST_F(SyncerTest, GetCommitIdsFiltersThrottledEntries) {
sync_pb::EntitySpecifics bookmark_data;
AddDefaultFieldValue(BOOKMARKS, &bookmark_data);
- mock_server_->AddUpdateDirectory(1, 0, "A", 10, 10);
+ mock_server_->AddUpdateDirectory(1, 0, "A", 10, 10,
+ foreign_cache_guid(), "-1");
SyncShareNudge();
{
@@ -712,13 +723,18 @@ TEST_F(SyncerTest, GetCommitIdsFiltersUnreadyEntries) {
bookmark.mutable_bookmark()->set_url("url");
bookmark.mutable_bookmark()->set_title("title");
AddDefaultFieldValue(BOOKMARKS, &encrypted_bookmark);
- mock_server_->AddUpdateDirectory(1, 0, "A", 10, 10);
- mock_server_->AddUpdateDirectory(2, 0, "B", 10, 10);
- mock_server_->AddUpdateDirectory(3, 0, "C", 10, 10);
- mock_server_->AddUpdateDirectory(4, 0, "D", 10, 10);
+ mock_server_->AddUpdateDirectory(1, 0, "A", 10, 10,
+ foreign_cache_guid(), "-1");
+ mock_server_->AddUpdateDirectory(2, 0, "B", 10, 10,
+ foreign_cache_guid(), "-2");
+ mock_server_->AddUpdateDirectory(3, 0, "C", 10, 10,
+ foreign_cache_guid(), "-3");
+ mock_server_->AddUpdateDirectory(4, 0, "D", 10, 10,
+ foreign_cache_guid(), "-4");
SyncShareNudge();
// Server side change will put A in conflict.
- mock_server_->AddUpdateDirectory(1, 0, "A", 20, 20);
+ mock_server_->AddUpdateDirectory(1, 0, "A", 20, 20,
+ foreign_cache_guid(), "-1");
{
// Mark bookmarks as encrypted and set the cryptographer to have pending
// keys.
@@ -846,9 +862,12 @@ TEST_F(SyncerTest, EncryptionAwareConflicts) {
EXPECT_TRUE(GetCryptographer(&wtrans)->has_pending_keys());
}
- mock_server_->AddUpdateSpecifics(1, 0, "A", 10, 10, true, 0, bookmark);
- mock_server_->AddUpdateSpecifics(2, 1, "B", 10, 10, false, 2, bookmark);
- mock_server_->AddUpdateSpecifics(3, 1, "C", 10, 10, false, 1, bookmark);
+ mock_server_->AddUpdateSpecifics(1, 0, "A", 10, 10, true, 0, bookmark,
+ foreign_cache_guid(), "-1");
+ mock_server_->AddUpdateSpecifics(2, 1, "B", 10, 10, false, 2, bookmark,
+ foreign_cache_guid(), "-2");
+ mock_server_->AddUpdateSpecifics(3, 1, "C", 10, 10, false, 1, bookmark,
+ foreign_cache_guid(), "-3");
mock_server_->AddUpdateSpecifics(4, 0, "D", 10, 10, false, 0, pref);
SyncShareNudge();
{
@@ -863,13 +882,17 @@ TEST_F(SyncerTest, EncryptionAwareConflicts) {
// Server side encryption will not be applied due to undecryptable data.
// At this point, BASE_SERVER_SPECIFICS should be filled for all four items.
mock_server_->AddUpdateSpecifics(1, 0, kEncryptedString, 20, 20, true, 0,
- encrypted_bookmark);
+ encrypted_bookmark,
+ foreign_cache_guid(), "-1");
mock_server_->AddUpdateSpecifics(2, 1, kEncryptedString, 20, 20, false, 2,
- encrypted_bookmark);
+ encrypted_bookmark,
+ foreign_cache_guid(), "-2");
mock_server_->AddUpdateSpecifics(3, 1, kEncryptedString, 20, 20, false, 1,
- encrypted_bookmark);
+ encrypted_bookmark,
+ foreign_cache_guid(), "-3");
mock_server_->AddUpdateSpecifics(4, 0, kEncryptedString, 20, 20, false, 0,
- encrypted_pref);
+ encrypted_pref,
+ foreign_cache_guid(), "-4");
SyncShareNudge();
{
// All should be unapplied due to being undecryptable and have a valid
@@ -884,12 +907,15 @@ TEST_F(SyncerTest, EncryptionAwareConflicts) {
// Server side change that don't modify anything should not affect
// BASE_SERVER_SPECIFICS (such as name changes and mtime changes).
mock_server_->AddUpdateSpecifics(1, 0, kEncryptedString, 30, 30, true, 0,
- encrypted_bookmark);
+ encrypted_bookmark,
+ foreign_cache_guid(), "-1");
mock_server_->AddUpdateSpecifics(2, 1, kEncryptedString, 30, 30, false, 2,
- encrypted_bookmark);
+ encrypted_bookmark,
+ foreign_cache_guid(), "-2");
// Item 3 doesn't change.
mock_server_->AddUpdateSpecifics(4, 0, kEncryptedString, 30, 30, false, 0,
- encrypted_pref);
+ encrypted_pref,
+ foreign_cache_guid(), "-4");
SyncShareNudge();
{
// Items 1, 2, and 4 should have newer server versions, 3 remains the same.
@@ -904,10 +930,12 @@ TEST_F(SyncerTest, EncryptionAwareConflicts) {
// Positional changes, parent changes, and specifics changes should reset
// BASE_SERVER_SPECIFICS.
// Became unencrypted.
- mock_server_->AddUpdateSpecifics(1, 0, "A", 40, 40, true, 0, bookmark);
+ mock_server_->AddUpdateSpecifics(1, 0, "A", 40, 40, true, 0, bookmark,
+ foreign_cache_guid(), "-1");
// Reordered to after item 2.
mock_server_->AddUpdateSpecifics(3, 1, kEncryptedString, 30, 30, false, 3,
- encrypted_bookmark);
+ encrypted_bookmark,
+ foreign_cache_guid(), "-3");
SyncShareNudge();
{
// Items 2 and 4 should be the only ones with BASE_SERVER_SPECIFICS set.
@@ -1579,12 +1607,15 @@ TEST_F(SyncerTest, TestCommitListOrderingAndNewParentAndChild) {
TEST_F(SyncerTest, UpdateWithZeroLengthName) {
// One illegal update
- mock_server_->AddUpdateDirectory(1, 0, "", 1, 10);
+ mock_server_->AddUpdateDirectory(1, 0, "", 1, 10,
+ foreign_cache_guid(), "-1");
// And one legal one that we're going to delete.
- mock_server_->AddUpdateDirectory(2, 0, "FOO", 1, 10);
+ mock_server_->AddUpdateDirectory(2, 0, "FOO", 1, 10,
+ foreign_cache_guid(), "-2");
SyncShareNudge();
// Delete the legal one. The new update has a null name.
- mock_server_->AddUpdateDirectory(2, 0, "", 2, 20);
+ mock_server_->AddUpdateDirectory(2, 0, "", 2, 20,
+ foreign_cache_guid(), "-2");
mock_server_->SetLastUpdateDeleted();
SyncShareNudge();
}
@@ -1595,7 +1626,8 @@ TEST_F(SyncerTest, TestBasicUpdate) {
string name = "in_root";
int64 version = 10;
int64 timestamp = 10;
- mock_server_->AddUpdateDirectory(id, parent_id, name, version, timestamp);
+ mock_server_->AddUpdateDirectory(id, parent_id, name, version, timestamp,
+ foreign_cache_guid(), "-1");
SyncShareNudge();
{
@@ -1616,17 +1648,20 @@ TEST_F(SyncerTest, TestBasicUpdate) {
TEST_F(SyncerTest, IllegalAndLegalUpdates) {
Id root = TestIdFactory::root();
// Should apply just fine.
- mock_server_->AddUpdateDirectory(1, 0, "in_root", 10, 10);
+ mock_server_->AddUpdateDirectory(1, 0, "in_root", 10, 10,
+ foreign_cache_guid(), "-1");
// Same name. But this SHOULD work.
- mock_server_->AddUpdateDirectory(2, 0, "in_root", 10, 10);
+ mock_server_->AddUpdateDirectory(2, 0, "in_root", 10, 10,
+ foreign_cache_guid(), "-2");
// Unknown parent: should never be applied. "-80" is a legal server ID,
// because any string sent by the server is a legal server ID in the sync
// protocol, but it's not the ID of any item known to the client. This
// update should succeed validation, but be stuck in the unapplied state
// until an item with the server ID "-80" arrives.
- mock_server_->AddUpdateDirectory(3, -80, "bad_parent", 10, 10);
+ mock_server_->AddUpdateDirectory(3, -80, "bad_parent", 10, 10,
+ foreign_cache_guid(), "-3");
SyncShareNudge();
@@ -1640,12 +1675,18 @@ TEST_F(SyncerTest, IllegalAndLegalUpdates) {
VerifyHierarchyConflictsUnspecified(mock_server_->last_request());
// These entries will be used in the second set of updates.
- mock_server_->AddUpdateDirectory(4, 0, "newer_version", 20, 10);
- mock_server_->AddUpdateDirectory(5, 0, "circular1", 10, 10);
- mock_server_->AddUpdateDirectory(6, 5, "circular2", 10, 10);
- mock_server_->AddUpdateDirectory(9, 3, "bad_parent_child", 10, 10);
- mock_server_->AddUpdateDirectory(100, 9, "bad_parent_child2", 10, 10);
- mock_server_->AddUpdateDirectory(10, 0, "dir_to_bookmark", 10, 10);
+ mock_server_->AddUpdateDirectory(4, 0, "newer_version", 20, 10,
+ foreign_cache_guid(), "-4");
+ mock_server_->AddUpdateDirectory(5, 0, "circular1", 10, 10,
+ foreign_cache_guid(), "-5");
+ mock_server_->AddUpdateDirectory(6, 5, "circular2", 10, 10,
+ foreign_cache_guid(), "-6");
+ mock_server_->AddUpdateDirectory(9, 3, "bad_parent_child", 10, 10,
+ foreign_cache_guid(), "-9");
+ mock_server_->AddUpdateDirectory(100, 9, "bad_parent_child2", 10, 10,
+ foreign_cache_guid(), "-100");
+ mock_server_->AddUpdateDirectory(10, 0, "dir_to_bookmark", 10, 10,
+ foreign_cache_guid(), "-10");
SyncShareNudge();
// The three items with an unresolved parent should be unapplied (3, 9, 100).
@@ -1682,17 +1723,21 @@ TEST_F(SyncerTest, IllegalAndLegalUpdates) {
}
// Updating 1 should not affect item 2 of the same name.
- mock_server_->AddUpdateDirectory(1, 0, "new_name", 20, 20);
+ mock_server_->AddUpdateDirectory(1, 0, "new_name", 20, 20,
+ foreign_cache_guid(), "-1");
// Moving 5 under 6 will create a cycle: a conflict.
- mock_server_->AddUpdateDirectory(5, 6, "circular3", 20, 20);
+ mock_server_->AddUpdateDirectory(5, 6, "circular3", 20, 20,
+ foreign_cache_guid(), "-5");
// Flip the is_dir bit: should fail verify & be dropped.
- mock_server_->AddUpdateBookmark(10, 0, "dir_to_bookmark", 20, 20);
+ mock_server_->AddUpdateBookmark(10, 0, "dir_to_bookmark", 20, 20,
+ foreign_cache_guid(), "-10");
SyncShareNudge();
// Version number older than last known: should fail verify & be dropped.
- mock_server_->AddUpdateDirectory(4, 0, "old_version", 10, 10);
+ mock_server_->AddUpdateDirectory(4, 0, "old_version", 10, 10,
+ foreign_cache_guid(), "-4");
SyncShareNudge();
{
syncable::ReadTransaction trans(FROM_HERE, directory());
@@ -1769,7 +1814,8 @@ TEST_F(SyncerTest, CommitTimeRename) {
}
// Mix in a directory creation too for later.
- mock_server_->AddUpdateDirectory(2, 0, "dir_in_root", 10, 10);
+ mock_server_->AddUpdateDirectory(2, 0, "dir_in_root", 10, 10,
+ foreign_cache_guid(), "-2");
mock_server_->SetCommitTimeRename("renamed_");
SyncShareNudge();
@@ -1885,9 +1931,8 @@ TEST_F(SyncerTest, CommitReuniteUpdateAdjustsChildren) {
// The following update should cause the folder to both apply the update, as
// well as reassociate the id.
mock_server_->AddUpdateDirectory(new_folder_id, root_id_,
- "new_folder", new_version, timestamp);
- mock_server_->SetLastUpdateOriginatorFields(
- directory()->cache_guid(), folder_id.GetServerId());
+ "new_folder", new_version, timestamp,
+ local_cache_guid(), folder_id.GetServerId());
// We don't want it accidentally committed, just the update applied.
mock_server_->set_conflict_all_commits(true);
@@ -1951,9 +1996,8 @@ TEST_F(SyncerTest, CommitReuniteUpdate) {
// Generate an update from the server with a relevant ID reassignment.
mock_server_->AddUpdateBookmark(new_entry_id, root_id_,
- "new_entry", new_version, timestamp);
- mock_server_->SetLastUpdateOriginatorFields(
- directory()->cache_guid(), entry_id.GetServerId());
+ "new_entry", new_version, timestamp,
+ local_cache_guid(), entry_id.GetServerId());
// We don't want it accidentally committed, just the update applied.
mock_server_->set_conflict_all_commits(true);
@@ -2003,10 +2047,8 @@ TEST_F(SyncerTest, CommitReuniteUpdateDoesNotChokeOnDeletedLocalEntry) {
// Generate an update from the server with a relevant ID reassignment.
mock_server_->AddUpdateBookmark(new_entry_id, root_id_,
- "new_entry", new_version, timestamp);
- mock_server_->SetLastUpdateOriginatorFields(
- directory()->cache_guid(),
- entry_id.GetServerId());
+ "new_entry", new_version, timestamp,
+ local_cache_guid(), entry_id.GetServerId());
// We don't want it accidentally committed, just the update applied.
mock_server_->set_conflict_all_commits(true);
@@ -2039,8 +2081,10 @@ TEST_F(SyncerTest, CommitReuniteUpdateDoesNotChokeOnDeletedLocalEntry) {
// TODO(chron): Add more unsanitized name tests.
TEST_F(SyncerTest, ConflictMatchingEntryHandlesUnsanitizedNames) {
- mock_server_->AddUpdateDirectory(1, 0, "A/A", 10, 10);
- mock_server_->AddUpdateDirectory(2, 0, "B/B", 10, 10);
+ mock_server_->AddUpdateDirectory(1, 0, "A/A", 10, 10,
+ foreign_cache_guid(), "-1");
+ mock_server_->AddUpdateDirectory(2, 0, "B/B", 10, 10,
+ foreign_cache_guid(), "-2");
mock_server_->set_conflict_all_commits(true);
SyncShareNudge();
{
@@ -2079,8 +2123,10 @@ TEST_F(SyncerTest, ConflictMatchingEntryHandlesUnsanitizedNames) {
}
TEST_F(SyncerTest, ConflictMatchingEntryHandlesNormalNames) {
- mock_server_->AddUpdateDirectory(1, 0, "A", 10, 10);
- mock_server_->AddUpdateDirectory(2, 0, "B", 10, 10);
+ mock_server_->AddUpdateDirectory(1, 0, "A", 10, 10,
+ foreign_cache_guid(), "-1");
+ mock_server_->AddUpdateDirectory(2, 0, "B", 10, 10,
+ foreign_cache_guid(), "-2");
mock_server_->set_conflict_all_commits(true);
SyncShareNudge();
{
@@ -2119,11 +2165,16 @@ TEST_F(SyncerTest, ConflictMatchingEntryHandlesNormalNames) {
}
TEST_F(SyncerTest, ReverseFolderOrderingTest) {
- mock_server_->AddUpdateDirectory(4, 3, "ggchild", 10, 10);
- mock_server_->AddUpdateDirectory(3, 2, "gchild", 10, 10);
- mock_server_->AddUpdateDirectory(5, 4, "gggchild", 10, 10);
- mock_server_->AddUpdateDirectory(2, 1, "child", 10, 10);
- mock_server_->AddUpdateDirectory(1, 0, "parent", 10, 10);
+ mock_server_->AddUpdateDirectory(4, 3, "ggchild", 10, 10,
+ foreign_cache_guid(), "-4");
+ mock_server_->AddUpdateDirectory(3, 2, "gchild", 10, 10,
+ foreign_cache_guid(), "-3");
+ mock_server_->AddUpdateDirectory(5, 4, "gggchild", 10, 10,
+ foreign_cache_guid(), "-5");
+ mock_server_->AddUpdateDirectory(2, 1, "child", 10, 10,
+ foreign_cache_guid(), "-2");
+ mock_server_->AddUpdateDirectory(1, 0, "parent", 10, 10,
+ foreign_cache_guid(), "-1");
SyncShareNudge();
syncable::ReadTransaction trans(FROM_HERE, directory());
@@ -2184,13 +2235,15 @@ TEST_F(EntryCreatedInNewFolderTest, EntryCreatedInNewFolderMidSync) {
}
TEST_F(SyncerTest, NegativeIDInUpdate) {
- mock_server_->AddUpdateBookmark(-10, 0, "bad", 40, 40);
+ mock_server_->AddUpdateBookmark(-10, 0, "bad", 40, 40,
+ foreign_cache_guid(), "-100");
SyncShareNudge();
// The negative id would make us CHECK!
}
TEST_F(SyncerTest, UnappliedUpdateOnCreatedItemItemDoesNotCrash) {
int64 metahandle_fred;
+ syncable::Id orig_id;
{
// Create an item.
WriteTransaction trans(FROM_HERE, UNITTEST, directory());
@@ -2198,6 +2251,7 @@ TEST_F(SyncerTest, UnappliedUpdateOnCreatedItemItemDoesNotCrash) {
"fred_match");
ASSERT_TRUE(fred_match.good());
metahandle_fred = fred_match.Get(META_HANDLE);
+ orig_id = fred_match.Get(ID);
WriteTestDataToEntry(&trans, &fred_match);
}
// Commit it.
@@ -2213,7 +2267,7 @@ TEST_F(SyncerTest, UnappliedUpdateOnCreatedItemItemDoesNotCrash) {
EXPECT_TRUE(fred_match.Get(ID).ServerKnows());
fred_match_id = fred_match.Get(ID);
mock_server_->AddUpdateBookmark(fred_match_id, trans.root_id(),
- "fred_match", 40, 40);
+ "fred_match", 40, 40, local_cache_guid(), orig_id.GetServerId());
}
// Run the syncer.
for (int i = 0 ; i < 30 ; ++i) {
@@ -2228,6 +2282,7 @@ TEST_F(SyncerTest, UnappliedUpdateOnCreatedItemItemDoesNotCrash) {
*/
TEST_F(SyncerTest, DoublyChangedWithResolver) {
+ syncable::Id local_id;
{
WriteTransaction wtrans(FROM_HERE, UNITTEST, directory());
MutableEntry parent(&wtrans, CREATE, BOOKMARKS, root_id_, "Folder");
@@ -2238,11 +2293,13 @@ TEST_F(SyncerTest, DoublyChangedWithResolver) {
parent.Put(syncable::SPECIFICS, DefaultBookmarkSpecifics());
MutableEntry child(&wtrans, CREATE, BOOKMARKS, parent_id_, "Pete.htm");
ASSERT_TRUE(child.good());
+ local_id = child.Get(syncable::ID);
child.Put(syncable::ID, child_id_);
child.Put(syncable::BASE_VERSION, 10);
WriteTestDataToEntry(&wtrans, &child);
}
- mock_server_->AddUpdateBookmark(child_id_, parent_id_, "Pete2.htm", 11, 10);
+ mock_server_->AddUpdateBookmark(child_id_, parent_id_, "Pete2.htm", 11, 10,
+ local_cache_guid(), local_id.GetServerId());
mock_server_->set_conflict_all_commits(true);
SyncShareNudge();
syncable::Directory::ChildHandles children;
@@ -2268,12 +2325,14 @@ TEST_F(SyncerTest, DoublyChangedWithResolver) {
// occuring. The entry had changed out underneath the user.
TEST_F(SyncerTest, CommitsUpdateDoesntAlterEntry) {
const base::Time& test_time = ProtoTimeToTime(123456);
+ syncable::Id local_id;
int64 entry_metahandle;
{
WriteTransaction wtrans(FROM_HERE, UNITTEST, directory());
MutableEntry entry(&wtrans, CREATE, BOOKMARKS, root_id_, "Pete");
ASSERT_TRUE(entry.good());
EXPECT_FALSE(entry.Get(ID).ServerKnows());
+ local_id = entry.Get(ID);
entry.Put(syncable::IS_DIR, true);
entry.Put(syncable::SPECIFICS, DefaultBookmarkSpecifics());
entry.Put(syncable::IS_UNSYNCED, true);
@@ -2294,6 +2353,8 @@ TEST_F(SyncerTest, CommitsUpdateDoesntAlterEntry) {
server_ordinal_in_parent = entry.Get(SERVER_ORDINAL_IN_PARENT);
}
sync_pb::SyncEntity* update = mock_server_->AddUpdateFromLastCommit();
+ update->set_originator_cache_guid(local_cache_guid());
+ update->set_originator_client_item_id(local_id.GetServerId());
EXPECT_EQ("Pete", update->name());
EXPECT_EQ(id.GetServerId(), update->id_string());
EXPECT_EQ(root_id_.GetServerId(), update->parent_id_string());
@@ -2314,11 +2375,15 @@ TEST_F(SyncerTest, ParentAndChildBothMatch) {
const FullModelTypeSet all_types = FullModelTypeSet::All();
syncable::Id parent_id = ids_.NewServerId();
syncable::Id child_id = ids_.NewServerId();
+ syncable::Id parent_local_id;
+ syncable::Id child_local_id;
+
{
WriteTransaction wtrans(FROM_HERE, UNITTEST, directory());
MutableEntry parent(&wtrans, CREATE, BOOKMARKS, root_id_, "Folder");
ASSERT_TRUE(parent.good());
+ parent_local_id = parent.Get(ID);
parent.Put(IS_DIR, true);
parent.Put(IS_UNSYNCED, true);
parent.Put(ID, parent_id);
@@ -2327,13 +2392,18 @@ TEST_F(SyncerTest, ParentAndChildBothMatch) {
MutableEntry child(&wtrans, CREATE, BOOKMARKS, parent.Get(ID), "test.htm");
ASSERT_TRUE(child.good());
+ child_local_id = child.Get(ID);
child.Put(ID, child_id);
child.Put(BASE_VERSION, 1);
child.Put(SPECIFICS, DefaultBookmarkSpecifics());
WriteTestDataToEntry(&wtrans, &child);
}
- mock_server_->AddUpdateDirectory(parent_id, root_id_, "Folder", 10, 10);
- mock_server_->AddUpdateBookmark(child_id, parent_id, "test.htm", 10, 10);
+ mock_server_->AddUpdateDirectory(parent_id, root_id_, "Folder", 10, 10,
+ local_cache_guid(),
+ parent_local_id.GetServerId());
+ mock_server_->AddUpdateBookmark(child_id, parent_id, "test.htm", 10, 10,
+ local_cache_guid(),
+ child_local_id.GetServerId());
mock_server_->set_conflict_all_commits(true);
SyncShareNudge();
SyncShareNudge();
@@ -2443,7 +2513,8 @@ TEST_F(SyncerTest, DeletingEntryInFolder) {
TEST_F(SyncerTest, DeletingEntryWithLocalEdits) {
int64 newfolder_metahandle;
- mock_server_->AddUpdateDirectory(1, 0, "bob", 1, 10);
+ mock_server_->AddUpdateDirectory(1, 0, "bob", 1, 10,
+ foreign_cache_guid(), "-1");
SyncShareNudge();
{
WriteTransaction trans(FROM_HERE, UNITTEST, directory());
@@ -2455,7 +2526,8 @@ TEST_F(SyncerTest, DeletingEntryWithLocalEdits) {
newfolder.Put(SPECIFICS, DefaultBookmarkSpecifics());
newfolder_metahandle = newfolder.Get(META_HANDLE);
}
- mock_server_->AddUpdateDirectory(1, 0, "bob", 2, 20);
+ mock_server_->AddUpdateDirectory(1, 0, "bob", 2, 20,
+ foreign_cache_guid(), "-1");
mock_server_->SetLastUpdateDeleted();
syncer_->SyncShare(session_.get(), SYNCER_BEGIN, APPLY_UPDATES);
{
@@ -2466,11 +2538,15 @@ TEST_F(SyncerTest, DeletingEntryWithLocalEdits) {
}
TEST_F(SyncerTest, FolderSwapUpdate) {
- mock_server_->AddUpdateDirectory(7801, 0, "bob", 1, 10);
- mock_server_->AddUpdateDirectory(1024, 0, "fred", 1, 10);
+ mock_server_->AddUpdateDirectory(7801, 0, "bob", 1, 10,
+ foreign_cache_guid(), "-7801");
+ mock_server_->AddUpdateDirectory(1024, 0, "fred", 1, 10,
+ foreign_cache_guid(), "-1024");
SyncShareNudge();
- mock_server_->AddUpdateDirectory(1024, 0, "bob", 2, 20);
- mock_server_->AddUpdateDirectory(7801, 0, "fred", 2, 20);
+ mock_server_->AddUpdateDirectory(1024, 0, "bob", 2, 20,
+ foreign_cache_guid(), "-1024");
+ mock_server_->AddUpdateDirectory(7801, 0, "fred", 2, 20,
+ foreign_cache_guid(), "-7801");
SyncShareNudge();
{
syncable::ReadTransaction trans(FROM_HERE, directory());
@@ -2487,9 +2563,12 @@ TEST_F(SyncerTest, FolderSwapUpdate) {
}
TEST_F(SyncerTest, NameCollidingFolderSwapWorksFine) {
- mock_server_->AddUpdateDirectory(7801, 0, "bob", 1, 10);
- mock_server_->AddUpdateDirectory(1024, 0, "fred", 1, 10);
- mock_server_->AddUpdateDirectory(4096, 0, "alice", 1, 10);
+ mock_server_->AddUpdateDirectory(7801, 0, "bob", 1, 10,
+ foreign_cache_guid(), "-7801");
+ mock_server_->AddUpdateDirectory(1024, 0, "fred", 1, 10,
+ foreign_cache_guid(), "-1024");
+ mock_server_->AddUpdateDirectory(4096, 0, "alice", 1, 10,
+ foreign_cache_guid(), "-4096");
SyncShareNudge();
{
syncable::ReadTransaction trans(FROM_HERE, directory());
@@ -2506,9 +2585,12 @@ TEST_F(SyncerTest, NameCollidingFolderSwapWorksFine) {
EXPECT_TRUE("alice" == id3.Get(NON_UNIQUE_NAME));
EXPECT_TRUE(root_id_ == id3.Get(PARENT_ID));
}
- mock_server_->AddUpdateDirectory(1024, 0, "bob", 2, 20);
- mock_server_->AddUpdateDirectory(7801, 0, "fred", 2, 20);
- mock_server_->AddUpdateDirectory(4096, 0, "bob", 2, 20);
+ mock_server_->AddUpdateDirectory(1024, 0, "bob", 2, 20,
+ foreign_cache_guid(), "-1024");
+ mock_server_->AddUpdateDirectory(7801, 0, "fred", 2, 20,
+ foreign_cache_guid(), "-7801");
+ mock_server_->AddUpdateDirectory(4096, 0, "bob", 2, 20,
+ foreign_cache_guid(), "-4096");
SyncShareNudge();
{
syncable::ReadTransaction trans(FROM_HERE, directory());
@@ -2623,8 +2705,11 @@ TEST_F(SyncerTest, HugeConflict) {
WriteTransaction trans(FROM_HERE, UNITTEST, directory());
for (int i = 0; i < item_count ; i++) {
syncable::Id next_id = ids_.NewServerId();
+ syncable::Id local_id = ids_.NewLocalId();
tree_ids.push_back(next_id);
- mock_server_->AddUpdateDirectory(next_id, last_id, "BOB", 2, 20);
+ mock_server_->AddUpdateDirectory(next_id, last_id, "BOB", 2, 20,
+ foreign_cache_guid(),
+ local_id.GetServerId());
last_id = next_id;
}
}
@@ -2644,7 +2729,7 @@ TEST_F(SyncerTest, HugeConflict) {
// Add the missing parent directory.
mock_server_->AddUpdateDirectory(parent_id, TestIdFactory::root(),
- "BOB", 2, 20);
+ "BOB", 2, 20, foreign_cache_guid(), "-3500");
SyncShareNudge();
// Now they should all be OK.
@@ -2660,7 +2745,8 @@ TEST_F(SyncerTest, HugeConflict) {
}
TEST_F(SyncerTest, DontCrashOnCaseChange) {
- mock_server_->AddUpdateDirectory(1, 0, "bob", 1, 10);
+ mock_server_->AddUpdateDirectory(1, 0, "bob", 1, 10,
+ foreign_cache_guid(), "-1");
SyncShareNudge();
{
WriteTransaction trans(FROM_HERE, UNITTEST, directory());
@@ -2669,22 +2755,26 @@ TEST_F(SyncerTest, DontCrashOnCaseChange) {
e.Put(IS_UNSYNCED, true);
}
mock_server_->set_conflict_all_commits(true);
- mock_server_->AddUpdateDirectory(1, 0, "BOB", 2, 20);
+ mock_server_->AddUpdateDirectory(1, 0, "BOB", 2, 20,
+ foreign_cache_guid(), "-1");
SyncShareNudge(); // USED TO CAUSE AN ASSERT
saw_syncer_event_ = false;
}
TEST_F(SyncerTest, UnsyncedItemAndUpdate) {
- mock_server_->AddUpdateDirectory(1, 0, "bob", 1, 10);
+ mock_server_->AddUpdateDirectory(1, 0, "bob", 1, 10,
+ foreign_cache_guid(), "-1");
SyncShareNudge();
mock_server_->set_conflict_all_commits(true);
- mock_server_->AddUpdateDirectory(2, 0, "bob", 2, 20);
+ mock_server_->AddUpdateDirectory(2, 0, "bob", 2, 20,
+ foreign_cache_guid(), "-2");
SyncShareNudge(); // USED TO CAUSE AN ASSERT
saw_syncer_event_ = false;
}
TEST_F(SyncerTest, NewEntryAndAlteredServerEntrySharePath) {
- mock_server_->AddUpdateBookmark(1, 0, "Foo.htm", 10, 10);
+ mock_server_->AddUpdateBookmark(1, 0, "Foo.htm", 10, 10,
+ foreign_cache_guid(), "-1");
SyncShareNudge();
int64 local_folder_handle;
syncable::Id local_folder_id;
@@ -2701,7 +2791,8 @@ TEST_F(SyncerTest, NewEntryAndAlteredServerEntrySharePath) {
ASSERT_TRUE(old.good());
WriteTestDataToEntry(&wtrans, &old);
}
- mock_server_->AddUpdateBookmark(1, 0, "Bar.htm", 20, 20);
+ mock_server_->AddUpdateBookmark(1, 0, "Bar.htm", 20, 20,
+ foreign_cache_guid(), "-1");
mock_server_->set_conflict_all_commits(true);
SyncShareNudge();
saw_syncer_event_ = false;
@@ -2727,7 +2818,8 @@ TEST_F(SyncerTest, NewEntryAndAlteredServerEntrySharePath) {
// Now add a server change to make the two names equal. There should
// be no conflict with that, since names are not unique.
- mock_server_->AddUpdateBookmark(1, 0, "Bar.htm", 30, 30);
+ mock_server_->AddUpdateBookmark(1, 0, "Bar.htm", 30, 30,
+ foreign_cache_guid(), "-1");
SyncShareNudge();
saw_syncer_event_ = false;
{
@@ -2751,7 +2843,8 @@ TEST_F(SyncerTest, NewEntryAndAlteredServerEntrySharePath) {
// Same as NewEntryAnddServerEntrySharePath, but using the old-style protocol.
TEST_F(SyncerTest, NewEntryAndAlteredServerEntrySharePath_OldBookmarksProto) {
mock_server_->set_use_legacy_bookmarks_protocol(true);
- mock_server_->AddUpdateBookmark(1, 0, "Foo.htm", 10, 10);
+ mock_server_->AddUpdateBookmark(1, 0, "Foo.htm", 10, 10,
+ foreign_cache_guid(), "-1");
SyncShareNudge();
int64 local_folder_handle;
syncable::Id local_folder_id;
@@ -2768,7 +2861,8 @@ TEST_F(SyncerTest, NewEntryAndAlteredServerEntrySharePath_OldBookmarksProto) {
ASSERT_TRUE(old.good());
WriteTestDataToEntry(&wtrans, &old);
}
- mock_server_->AddUpdateBookmark(1, 0, "Bar.htm", 20, 20);
+ mock_server_->AddUpdateBookmark(1, 0, "Bar.htm", 20, 20,
+ foreign_cache_guid(), "-1");
mock_server_->set_conflict_all_commits(true);
SyncShareNudge();
saw_syncer_event_ = false;
@@ -2794,7 +2888,8 @@ TEST_F(SyncerTest, NewEntryAndAlteredServerEntrySharePath_OldBookmarksProto) {
// Now add a server change to make the two names equal. There should
// be no conflict with that, since names are not unique.
- mock_server_->AddUpdateBookmark(1, 0, "Bar.htm", 30, 30);
+ mock_server_->AddUpdateBookmark(1, 0, "Bar.htm", 30, 30,
+ foreign_cache_guid(), "-1");
SyncShareNudge();
saw_syncer_event_ = false;
{
@@ -2818,8 +2913,10 @@ TEST_F(SyncerTest, NewEntryAndAlteredServerEntrySharePath_OldBookmarksProto) {
// Circular links should be resolved by the server.
TEST_F(SyncerTest, SiblingDirectoriesBecomeCircular) {
// we don't currently resolve this. This test ensures we don't.
- mock_server_->AddUpdateDirectory(1, 0, "A", 10, 10);
- mock_server_->AddUpdateDirectory(2, 0, "B", 10, 10);
+ mock_server_->AddUpdateDirectory(1, 0, "A", 10, 10,
+ foreign_cache_guid(), "-1");
+ mock_server_->AddUpdateDirectory(2, 0, "B", 10, 10,
+ foreign_cache_guid(), "-2");
SyncShareNudge();
{
WriteTransaction wtrans(FROM_HERE, UNITTEST, directory());
@@ -2829,7 +2926,8 @@ TEST_F(SyncerTest, SiblingDirectoriesBecomeCircular) {
ASSERT_TRUE(A.Put(PARENT_ID, ids_.FromNumber(2)));
ASSERT_TRUE(A.Put(NON_UNIQUE_NAME, "B"));
}
- mock_server_->AddUpdateDirectory(2, 1, "A", 20, 20);
+ mock_server_->AddUpdateDirectory(2, 1, "A", 20, 20,
+ foreign_cache_guid(), "-2");
mock_server_->set_conflict_all_commits(true);
SyncShareNudge();
saw_syncer_event_ = false;
@@ -2846,8 +2944,10 @@ TEST_F(SyncerTest, SiblingDirectoriesBecomeCircular) {
TEST_F(SyncerTest, SwapEntryNames) {
// Simple transaction test.
- mock_server_->AddUpdateDirectory(1, 0, "A", 10, 10);
- mock_server_->AddUpdateDirectory(2, 0, "B", 10, 10);
+ mock_server_->AddUpdateDirectory(1, 0, "A", 10, 10,
+ foreign_cache_guid(), "-1");
+ mock_server_->AddUpdateDirectory(2, 0, "B", 10, 10,
+ foreign_cache_guid(), "-2");
mock_server_->set_conflict_all_commits(true);
SyncShareNudge();
{
@@ -2867,8 +2967,10 @@ TEST_F(SyncerTest, SwapEntryNames) {
}
TEST_F(SyncerTest, DualDeletionWithNewItemNameClash) {
- mock_server_->AddUpdateDirectory(1, 0, "A", 10, 10);
- mock_server_->AddUpdateBookmark(2, 0, "B", 10, 10);
+ mock_server_->AddUpdateDirectory(1, 0, "A", 10, 10,
+ foreign_cache_guid(), "-1");
+ mock_server_->AddUpdateBookmark(2, 0, "B", 10, 10,
+ foreign_cache_guid(), "-2");
mock_server_->set_conflict_all_commits(true);
SyncShareNudge();
{
@@ -2878,7 +2980,8 @@ TEST_F(SyncerTest, DualDeletionWithNewItemNameClash) {
WriteTestDataToEntry(&trans, &B);
B.Put(IS_DEL, true);
}
- mock_server_->AddUpdateBookmark(2, 0, "A", 11, 11);
+ mock_server_->AddUpdateBookmark(2, 0, "A", 11, 11,
+ foreign_cache_guid(), "-2");
mock_server_->SetLastUpdateDeleted();
SyncShareNudge();
{
@@ -2897,7 +3000,8 @@ TEST_F(SyncerTest, DualDeletionWithNewItemNameClash) {
TEST_F(SyncerTest, ResolveWeWroteTheyDeleted) {
int64 bob_metahandle;
- mock_server_->AddUpdateBookmark(1, 0, "bob", 1, 10);
+ mock_server_->AddUpdateBookmark(1, 0, "bob", 1, 10,
+ foreign_cache_guid(), "-1");
SyncShareNudge();
{
WriteTransaction trans(FROM_HERE, UNITTEST, directory());
@@ -2906,7 +3010,8 @@ TEST_F(SyncerTest, ResolveWeWroteTheyDeleted) {
bob_metahandle = bob.Get(META_HANDLE);
WriteTestDataToEntry(&trans, &bob);
}
- mock_server_->AddUpdateBookmark(1, 0, "bob", 2, 10);
+ mock_server_->AddUpdateBookmark(1, 0, "bob", 2, 10,
+ foreign_cache_guid(), "-1");
mock_server_->SetLastUpdateDeleted();
mock_server_->set_conflict_all_commits(true);
SyncShareNudge();
@@ -2954,7 +3059,8 @@ TEST_F(SyncerTest, DuplicateIDReturn) {
}
TEST_F(SyncerTest, DeletedEntryWithBadParentInLoopCalculation) {
- mock_server_->AddUpdateDirectory(1, 0, "bob", 1, 10);
+ mock_server_->AddUpdateDirectory(1, 0, "bob", 1, 10,
+ foreign_cache_guid(), "-1");
SyncShareNudge();
{
WriteTransaction trans(FROM_HERE, UNITTEST, directory());
@@ -2965,17 +3071,20 @@ TEST_F(SyncerTest, DeletedEntryWithBadParentInLoopCalculation) {
bob.Put(IS_DEL, true);
bob.Put(IS_UNSYNCED, true);
}
- mock_server_->AddUpdateDirectory(2, 1, "fred", 1, 10);
+ mock_server_->AddUpdateDirectory(2, 1, "fred", 1, 10,
+ foreign_cache_guid(), "-2");
SyncShareNudge();
SyncShareNudge();
}
TEST_F(SyncerTest, ConflictResolverMergesLocalDeleteAndServerUpdate) {
+ syncable::Id local_id;
{
WriteTransaction trans(FROM_HERE, UNITTEST, directory());
MutableEntry local_deleted(
&trans, CREATE, BOOKMARKS, trans.root_id(), "name");
+ local_id = local_deleted.Get(ID);
local_deleted.Put(ID, ids_.FromNumber(1));
local_deleted.Put(BASE_VERSION, 1);
local_deleted.Put(IS_DEL, true);
@@ -2984,7 +3093,9 @@ TEST_F(SyncerTest, ConflictResolverMergesLocalDeleteAndServerUpdate) {
local_deleted.Put(SPECIFICS, DefaultBookmarkSpecifics());
}
- mock_server_->AddUpdateBookmark(ids_.FromNumber(1), root_id_, "name", 10, 10);
+ mock_server_->AddUpdateBookmark(ids_.FromNumber(1), root_id_, "name", 10, 10,
+ local_cache_guid(),
+ local_id.GetServerId());
// We don't care about actually committing, just the resolution.
mock_server_->set_conflict_all_commits(true);
@@ -3019,7 +3130,9 @@ TEST_F(SyncerTest, UpdateFlipsTheFolderBit) {
}
// Server update: entry-type object (not a container), revision 10.
- mock_server_->AddUpdateBookmark(ids_.FromNumber(1), root_id_, "name", 10, 10);
+ mock_server_->AddUpdateBookmark(ids_.FromNumber(1), root_id_, "name", 10, 10,
+ local_cache_guid(),
+ ids_.FromNumber(1).GetServerId());
// Don't attempt to commit.
mock_server_->set_conflict_all_commits(true);
@@ -3043,7 +3156,8 @@ TEST_F(SyncerTest, UpdateFlipsTheFolderBit) {
// that needs updates, resulting in CHECK.
TEST_F(SyncerTest, MergingExistingItems) {
mock_server_->set_conflict_all_commits(true);
- mock_server_->AddUpdateBookmark(1, 0, "base", 10, 10);
+ mock_server_->AddUpdateBookmark(1, 0, "base", 10, 10,
+ local_cache_guid(), "-1");
SyncShareNudge();
{
WriteTransaction trans(FROM_HERE, UNITTEST, directory());
@@ -3051,7 +3165,8 @@ TEST_F(SyncerTest, MergingExistingItems) {
&trans, CREATE, BOOKMARKS, trans.root_id(), "Copy of base");
WriteTestDataToEntry(&trans, &entry);
}
- mock_server_->AddUpdateBookmark(1, 0, "Copy of base", 50, 50);
+ mock_server_->AddUpdateBookmark(1, 0, "Copy of base", 50, 50,
+ local_cache_guid(), "-1");
SyncRepeatedlyToTriggerConflictResolution(session_.get());
}
@@ -3066,7 +3181,8 @@ TEST_F(SyncerTest, LongChangelistWithApplicationConflict) {
// till much later.
syncable::Id stuck_entry_id = TestIdFactory::FromNumber(99999);
mock_server_->AddUpdateDirectory(stuck_entry_id,
- folder_id, "stuck", 1, 1);
+ folder_id, "stuck", 1, 1,
+ foreign_cache_guid(), "-99999");
mock_server_->SetChangesRemaining(depth - 1);
syncer_->SyncShare(session_.get(), SYNCER_BEGIN, SYNCER_END);
@@ -3093,7 +3209,8 @@ TEST_F(SyncerTest, LongChangelistWithApplicationConflict) {
// And finally the folder.
mock_server_->AddUpdateDirectory(folder_id,
- TestIdFactory::root(), "folder", 1, 1);
+ TestIdFactory::root(), "folder", 1, 1,
+ foreign_cache_guid(), "-1");
mock_server_->SetChangesRemaining(0);
SyncShareNudge();
SyncShareNudge();
@@ -3111,8 +3228,10 @@ TEST_F(SyncerTest, LongChangelistWithApplicationConflict) {
TEST_F(SyncerTest, DontMergeTwoExistingItems) {
mock_server_->set_conflict_all_commits(true);
- mock_server_->AddUpdateBookmark(1, 0, "base", 10, 10);
- mock_server_->AddUpdateBookmark(2, 0, "base2", 10, 10);
+ mock_server_->AddUpdateBookmark(1, 0, "base", 10, 10,
+ foreign_cache_guid(), "-1");
+ mock_server_->AddUpdateBookmark(2, 0, "base2", 10, 10,
+ foreign_cache_guid(), "-2");
SyncShareNudge();
{
WriteTransaction trans(FROM_HERE, UNITTEST, directory());
@@ -3121,7 +3240,8 @@ TEST_F(SyncerTest, DontMergeTwoExistingItems) {
EXPECT_TRUE(entry.Put(NON_UNIQUE_NAME, "Copy of base"));
entry.Put(IS_UNSYNCED, true);
}
- mock_server_->AddUpdateBookmark(1, 0, "Copy of base", 50, 50);
+ mock_server_->AddUpdateBookmark(1, 0, "Copy of base", 50, 50,
+ foreign_cache_guid(), "-1");
SyncRepeatedlyToTriggerConflictResolution(session_.get());
{
syncable::ReadTransaction trans(FROM_HERE, directory());
@@ -3139,10 +3259,13 @@ TEST_F(SyncerTest, DontMergeTwoExistingItems) {
TEST_F(SyncerTest, TestUndeleteUpdate) {
mock_server_->set_conflict_all_commits(true);
- mock_server_->AddUpdateDirectory(1, 0, "foo", 1, 1);
- mock_server_->AddUpdateDirectory(2, 1, "bar", 1, 2);
+ mock_server_->AddUpdateDirectory(1, 0, "foo", 1, 1,
+ foreign_cache_guid(), "-1");
+ mock_server_->AddUpdateDirectory(2, 1, "bar", 1, 2,
+ foreign_cache_guid(), "-2");
SyncShareNudge();
- mock_server_->AddUpdateDirectory(2, 1, "bar", 2, 3);
+ mock_server_->AddUpdateDirectory(2, 1, "bar", 2, 3,
+ foreign_cache_guid(), "-2");
mock_server_->SetLastUpdateDeleted();
SyncShareNudge();
@@ -3154,12 +3277,14 @@ TEST_F(SyncerTest, TestUndeleteUpdate) {
EXPECT_TRUE(entry.Get(IS_DEL));
metahandle = entry.Get(META_HANDLE);
}
- mock_server_->AddUpdateDirectory(1, 0, "foo", 2, 4);
+ mock_server_->AddUpdateDirectory(1, 0, "foo", 2, 4,
+ foreign_cache_guid(), "-1");
mock_server_->SetLastUpdateDeleted();
SyncShareNudge();
// This used to be rejected as it's an undeletion. Now, it results in moving
// the delete path aside.
- mock_server_->AddUpdateDirectory(2, 1, "bar", 3, 5);
+ mock_server_->AddUpdateDirectory(2, 1, "bar", 3, 5,
+ foreign_cache_guid(), "-2");
SyncShareNudge();
{
syncable::ReadTransaction trans(FROM_HERE, directory());
@@ -3173,8 +3298,10 @@ TEST_F(SyncerTest, TestUndeleteUpdate) {
}
TEST_F(SyncerTest, TestMoveSanitizedNamedFolder) {
- mock_server_->AddUpdateDirectory(1, 0, "foo", 1, 1);
- mock_server_->AddUpdateDirectory(2, 0, ":::", 1, 2);
+ mock_server_->AddUpdateDirectory(1, 0, "foo", 1, 1,
+ foreign_cache_guid(), "-1");
+ mock_server_->AddUpdateDirectory(2, 0, ":::", 1, 2,
+ foreign_cache_guid(), "-2");
SyncShareNudge();
{
WriteTransaction trans(FROM_HERE, UNITTEST, directory());
@@ -3185,14 +3312,17 @@ TEST_F(SyncerTest, TestMoveSanitizedNamedFolder) {
}
SyncShareNudge();
// We use the same sync ts as before so our times match up.
- mock_server_->AddUpdateDirectory(2, 1, ":::", 2, 2);
+ mock_server_->AddUpdateDirectory(2, 1, ":::", 2, 2,
+ foreign_cache_guid(), "-2");
SyncShareNudge();
}
// Don't crash when this occurs.
TEST_F(SyncerTest, UpdateWhereParentIsNotAFolder) {
- mock_server_->AddUpdateBookmark(1, 0, "B", 10, 10);
- mock_server_->AddUpdateDirectory(2, 1, "BookmarkParent", 10, 10);
+ mock_server_->AddUpdateBookmark(1, 0, "B", 10, 10,
+ foreign_cache_guid(), "-1");
+ mock_server_->AddUpdateDirectory(2, 1, "BookmarkParent", 10, 10,
+ foreign_cache_guid(), "-2");
// Used to cause a CHECK
SyncShareNudge();
{
@@ -3213,9 +3343,11 @@ TEST_F(SyncerTest, DirectoryUpdateTest) {
Id in_in_root_id = ids_.NewServerId();
mock_server_->AddUpdateDirectory(in_root_id, TestIdFactory::root(),
- "in_root_name", 2, 2);
+ "in_root_name", 2, 2,
+ foreign_cache_guid(), "-1");
mock_server_->AddUpdateDirectory(in_in_root_id, in_root_id,
- "in_in_root_name", 3, 3);
+ "in_in_root_name", 3, 3,
+ foreign_cache_guid(), "-2");
SyncShareNudge();
{
syncable::ReadTransaction trans(FROM_HERE, directory());
@@ -3280,7 +3412,8 @@ TEST_F(SyncerTest, TestClientCommandDuringUpdate) {
command->set_set_sync_poll_interval(8);
command->set_set_sync_long_poll_interval(800);
command->set_sessions_commit_delay_seconds(3141);
- mock_server_->AddUpdateDirectory(1, 0, "in_root", 1, 1);
+ mock_server_->AddUpdateDirectory(1, 0, "in_root", 1, 1,
+ foreign_cache_guid(), "-1");
mock_server_->SetGUClientCommand(command);
SyncShareNudge();
@@ -3295,7 +3428,8 @@ TEST_F(SyncerTest, TestClientCommandDuringUpdate) {
command->set_set_sync_poll_interval(180);
command->set_set_sync_long_poll_interval(190);
command->set_sessions_commit_delay_seconds(2718);
- mock_server_->AddUpdateDirectory(1, 0, "in_root", 1, 1);
+ mock_server_->AddUpdateDirectory(1, 0, "in_root", 1, 1,
+ foreign_cache_guid(), "-1");
mock_server_->SetGUClientCommand(command);
SyncShareNudge();
@@ -3346,9 +3480,9 @@ TEST_F(SyncerTest, EnsureWeSendUpOldParent) {
syncable::Id folder_two_id = ids_.FromNumber(2);
mock_server_->AddUpdateDirectory(folder_one_id, TestIdFactory::root(),
- "folder_one", 1, 1);
+ "folder_one", 1, 1, foreign_cache_guid(), "-1");
mock_server_->AddUpdateDirectory(folder_two_id, TestIdFactory::root(),
- "folder_two", 1, 1);
+ "folder_two", 1, 1, foreign_cache_guid(), "-2");
SyncShareNudge();
{
// A moved entry should send an "old parent."
@@ -3397,7 +3531,8 @@ TEST_F(SyncerTest, TestSimpleUndelete) {
Id id = ids_.MakeServer("undeletion item"), root = TestIdFactory::root();
mock_server_->set_conflict_all_commits(true);
// Let there be an entry from the server.
- mock_server_->AddUpdateBookmark(id, root, "foo", 1, 10);
+ mock_server_->AddUpdateBookmark(id, root, "foo", 1, 10,
+ foreign_cache_guid(), "-1");
SyncShareNudge();
// Check it out and delete it.
{
@@ -3423,7 +3558,8 @@ TEST_F(SyncerTest, TestSimpleUndelete) {
}
SyncShareNudge();
// Update from server confirming deletion.
- mock_server_->AddUpdateBookmark(id, root, "foo", 2, 11);
+ mock_server_->AddUpdateBookmark(id, root, "foo", 2, 11,
+ foreign_cache_guid(), "-1");
mock_server_->SetLastUpdateDeleted();
SyncShareNudge();
// IS_DEL AND SERVER_IS_DEL now both true.
@@ -3437,7 +3573,8 @@ TEST_F(SyncerTest, TestSimpleUndelete) {
EXPECT_TRUE(entry.Get(SERVER_IS_DEL));
}
// Undelete from server.
- mock_server_->AddUpdateBookmark(id, root, "foo", 2, 12);
+ mock_server_->AddUpdateBookmark(id, root, "foo", 2, 12,
+ foreign_cache_guid(), "-1");
SyncShareNudge();
// IS_DEL and SERVER_IS_DEL now both false.
{
@@ -3455,7 +3592,8 @@ TEST_F(SyncerTest, TestUndeleteWithMissingDeleteUpdate) {
Id id = ids_.MakeServer("undeletion item"), root = TestIdFactory::root();
// Let there be a entry, from the server.
mock_server_->set_conflict_all_commits(true);
- mock_server_->AddUpdateBookmark(id, root, "foo", 1, 10);
+ mock_server_->AddUpdateBookmark(id, root, "foo", 1, 10,
+ foreign_cache_guid(), "-1");
SyncShareNudge();
// Check it out and delete it.
{
@@ -3482,7 +3620,8 @@ TEST_F(SyncerTest, TestUndeleteWithMissingDeleteUpdate) {
SyncShareNudge();
// Say we do not get an update from server confirming deletion. Undelete
// from server
- mock_server_->AddUpdateBookmark(id, root, "foo", 2, 12);
+ mock_server_->AddUpdateBookmark(id, root, "foo", 2, 12,
+ foreign_cache_guid(), "-1");
SyncShareNudge();
// IS_DEL and SERVER_IS_DEL now both false.
{
@@ -3501,15 +3640,19 @@ TEST_F(SyncerTest, TestUndeleteIgnoreCorrectlyUnappliedUpdate) {
Id root = TestIdFactory::root();
// Duplicate! expect path clashing!
mock_server_->set_conflict_all_commits(true);
- mock_server_->AddUpdateBookmark(id1, root, "foo", 1, 10);
- mock_server_->AddUpdateBookmark(id2, root, "foo", 1, 10);
+ mock_server_->AddUpdateBookmark(id1, root, "foo", 1, 10,
+ foreign_cache_guid(), "-1");
+ mock_server_->AddUpdateBookmark(id2, root, "foo", 1, 10,
+ foreign_cache_guid(), "-2");
SyncShareNudge();
- mock_server_->AddUpdateBookmark(id2, root, "foo2", 2, 20);
+ mock_server_->AddUpdateBookmark(id2, root, "foo2", 2, 20,
+ foreign_cache_guid(), "-2");
SyncShareNudge(); // Now just don't explode.
}
TEST_F(SyncerTest, ClientTagServerCreatedUpdatesWork) {
- mock_server_->AddUpdateDirectory(1, 0, "permitem1", 1, 10);
+ mock_server_->AddUpdateDirectory(1, 0, "permitem1", 1, 10,
+ foreign_cache_guid(), "-1");
mock_server_->SetLastUpdateClientTag("permfolder");
SyncShareNudge();
@@ -3525,7 +3668,8 @@ TEST_F(SyncerTest, ClientTagServerCreatedUpdatesWork) {
EXPECT_EQ(perm_folder.Get(NON_UNIQUE_NAME), "permitem1");
}
- mock_server_->AddUpdateDirectory(1, 0, "permitem_renamed", 10, 100);
+ mock_server_->AddUpdateDirectory(1, 0, "permitem_renamed", 10, 100,
+ foreign_cache_guid(), "-1");
mock_server_->SetLastUpdateClientTag("permfolder");
SyncShareNudge();
@@ -3543,7 +3687,8 @@ TEST_F(SyncerTest, ClientTagServerCreatedUpdatesWork) {
}
TEST_F(SyncerTest, ClientTagIllegalUpdateIgnored) {
- mock_server_->AddUpdateDirectory(1, 0, "permitem1", 1, 10);
+ mock_server_->AddUpdateDirectory(1, 0, "permitem1", 1, 10,
+ foreign_cache_guid(), "-1");
mock_server_->SetLastUpdateClientTag("permfolder");
SyncShareNudge();
@@ -3559,7 +3704,8 @@ TEST_F(SyncerTest, ClientTagIllegalUpdateIgnored) {
EXPECT_TRUE(perm_folder.Get(ID).ServerKnows());
}
- mock_server_->AddUpdateDirectory(1, 0, "permitem_renamed", 10, 100);
+ mock_server_->AddUpdateDirectory(1, 0, "permitem_renamed", 10, 100,
+ foreign_cache_guid(), "-1");
mock_server_->SetLastUpdateClientTag("wrongtag");
SyncShareNudge();
@@ -3583,28 +3729,22 @@ TEST_F(SyncerTest, ClientTagIllegalUpdateIgnored) {
TEST_F(SyncerTest, ClientTagUncommittedTagMatchesUpdate) {
int64 original_metahandle = 0;
- sync_pb::EntitySpecifics local_bookmark(DefaultBookmarkSpecifics());
- local_bookmark.mutable_bookmark()->set_url("http://foo/localsite");
- sync_pb::EntitySpecifics server_bookmark(DefaultBookmarkSpecifics());
- server_bookmark.mutable_bookmark()->set_url("http://bar/serversite");
-
{
WriteTransaction trans(FROM_HERE, UNITTEST, directory());
- MutableEntry perm_folder(
- &trans, CREATE, BOOKMARKS, ids_.root(), "clientname");
- ASSERT_TRUE(perm_folder.good());
- perm_folder.Put(UNIQUE_CLIENT_TAG, "clientperm");
- perm_folder.Put(SPECIFICS, local_bookmark);
- perm_folder.Put(IS_UNSYNCED, true);
- EXPECT_FALSE(perm_folder.Get(IS_UNAPPLIED_UPDATE));
- EXPECT_FALSE(perm_folder.Get(ID).ServerKnows());
- original_metahandle = perm_folder.Get(META_HANDLE);
- }
-
- mock_server_->AddUpdateBookmark(1, 0, "permitem_renamed", 10, 100);
- mock_server_->SetLastUpdateClientTag("clientperm");
- mock_server_->GetMutableLastUpdate()->mutable_specifics()->
- CopyFrom(server_bookmark);
+ MutableEntry pref(
+ &trans, CREATE, PREFERENCES, ids_.root(), "name");
+ ASSERT_TRUE(pref.good());
+ pref.Put(UNIQUE_CLIENT_TAG, "tag");
+ pref.Put(IS_UNSYNCED, true);
+ EXPECT_FALSE(pref.Get(IS_UNAPPLIED_UPDATE));
+ EXPECT_FALSE(pref.Get(ID).ServerKnows());
+ original_metahandle = pref.Get(META_HANDLE);
+ }
+
+ syncable::Id server_id = TestIdFactory::MakeServer("id");
+ mock_server_->AddUpdatePref(server_id.GetServerId(),
+ ids_.root().GetServerId(),
+ "tag", 10, 100);
mock_server_->set_conflict_all_commits(true);
SyncShareNudge();
@@ -3612,20 +3752,17 @@ TEST_F(SyncerTest, ClientTagUncommittedTagMatchesUpdate) {
{
syncable::ReadTransaction trans(FROM_HERE, directory());
- Entry perm_folder(&trans, GET_BY_CLIENT_TAG, "clientperm");
- ASSERT_TRUE(perm_folder.good());
- EXPECT_FALSE(perm_folder.Get(IS_DEL));
- EXPECT_FALSE(perm_folder.Get(IS_UNAPPLIED_UPDATE));
- EXPECT_TRUE(perm_folder.Get(IS_UNSYNCED));
- EXPECT_EQ(10, perm_folder.Get(BASE_VERSION));
+ Entry pref(&trans, GET_BY_CLIENT_TAG, "tag");
+ ASSERT_TRUE(pref.good());
+ EXPECT_FALSE(pref.Get(IS_DEL));
+ EXPECT_FALSE(pref.Get(IS_UNAPPLIED_UPDATE));
+ EXPECT_TRUE(pref.Get(IS_UNSYNCED));
+ EXPECT_EQ(10, pref.Get(BASE_VERSION));
// Entry should have been given the new ID while preserving the
// metahandle; client should have won the conflict resolution.
- EXPECT_EQ(original_metahandle, perm_folder.Get(META_HANDLE));
- EXPECT_EQ("clientperm", perm_folder.Get(UNIQUE_CLIENT_TAG));
- EXPECT_EQ("clientname", perm_folder.Get(NON_UNIQUE_NAME));
- EXPECT_EQ(local_bookmark.SerializeAsString(),
- perm_folder.Get(SPECIFICS).SerializeAsString());
- EXPECT_TRUE(perm_folder.Get(ID).ServerKnows());
+ EXPECT_EQ(original_metahandle, pref.Get(META_HANDLE));
+ EXPECT_EQ("tag", pref.Get(UNIQUE_CLIENT_TAG));
+ EXPECT_TRUE(pref.Get(ID).ServerKnows());
}
mock_server_->set_conflict_all_commits(false);
@@ -3635,20 +3772,17 @@ TEST_F(SyncerTest, ClientTagUncommittedTagMatchesUpdate) {
{
syncable::ReadTransaction trans(FROM_HERE, directory());
- Entry perm_folder(&trans, GET_BY_CLIENT_TAG, "clientperm");
- ASSERT_TRUE(perm_folder.good());
- EXPECT_FALSE(perm_folder.Get(IS_DEL));
- EXPECT_FALSE(perm_folder.Get(IS_UNAPPLIED_UPDATE));
- EXPECT_FALSE(perm_folder.Get(IS_UNSYNCED));
- EXPECT_TRUE(10 < perm_folder.Get(BASE_VERSION));
+ Entry pref(&trans, GET_BY_CLIENT_TAG, "tag");
+ ASSERT_TRUE(pref.good());
+ EXPECT_FALSE(pref.Get(IS_DEL));
+ EXPECT_FALSE(pref.Get(IS_UNAPPLIED_UPDATE));
+ EXPECT_FALSE(pref.Get(IS_UNSYNCED));
+ EXPECT_TRUE(10 < pref.Get(BASE_VERSION));
// Entry should have been given the new ID while preserving the
// metahandle; client should have won the conflict resolution.
- EXPECT_EQ(original_metahandle, perm_folder.Get(META_HANDLE));
- EXPECT_EQ("clientperm", perm_folder.Get(UNIQUE_CLIENT_TAG));
- EXPECT_EQ("clientname", perm_folder.Get(NON_UNIQUE_NAME));
- EXPECT_EQ(local_bookmark.SerializeAsString(),
- perm_folder.Get(SPECIFICS).SerializeAsString());
- EXPECT_TRUE(perm_folder.Get(ID).ServerKnows());
+ EXPECT_EQ(original_metahandle, pref.Get(META_HANDLE));
+ EXPECT_EQ("tag", pref.Get(UNIQUE_CLIENT_TAG));
+ EXPECT_TRUE(pref.Get(ID).ServerKnows());
}
}
@@ -3656,37 +3790,38 @@ TEST_F(SyncerTest, ClientTagConflictWithDeletedLocalEntry) {
{
// Create a deleted local entry with a unique client tag.
WriteTransaction trans(FROM_HERE, UNITTEST, directory());
- MutableEntry perm_folder(
- &trans, CREATE, BOOKMARKS, ids_.root(), "clientname");
- ASSERT_TRUE(perm_folder.good());
- ASSERT_FALSE(perm_folder.Get(ID).ServerKnows());
- perm_folder.Put(UNIQUE_CLIENT_TAG, "clientperm");
- perm_folder.Put(SPECIFICS, DefaultBookmarkSpecifics());
- perm_folder.Put(IS_UNSYNCED, true);
+ MutableEntry pref(
+ &trans, CREATE, PREFERENCES, ids_.root(), "name");
+ ASSERT_TRUE(pref.good());
+ ASSERT_FALSE(pref.Get(ID).ServerKnows());
+ pref.Put(UNIQUE_CLIENT_TAG, "tag");
+ pref.Put(IS_UNSYNCED, true);
// Note: IS_DEL && !ServerKnows() will clear the UNSYNCED bit.
// (We never attempt to commit server-unknown deleted items, so this
// helps us clean up those entries).
- perm_folder.Put(IS_DEL, true);
+ pref.Put(IS_DEL, true);
}
// Prepare an update with the same unique client tag.
- mock_server_->AddUpdateDirectory(1, 0, "permitem_renamed", 10, 100);
- mock_server_->SetLastUpdateClientTag("clientperm");
+ syncable::Id server_id = TestIdFactory::MakeServer("id");
+ mock_server_->AddUpdatePref(server_id.GetServerId(),
+ ids_.root().GetServerId(),
+ "tag", 10, 100);
SyncShareNudge();
// The local entry will be overwritten.
{
syncable::ReadTransaction trans(FROM_HERE, directory());
- Entry perm_folder(&trans, GET_BY_CLIENT_TAG, "clientperm");
- ASSERT_TRUE(perm_folder.good());
- ASSERT_TRUE(perm_folder.Get(ID).ServerKnows());
- EXPECT_FALSE(perm_folder.Get(IS_DEL));
- EXPECT_FALSE(perm_folder.Get(IS_UNAPPLIED_UPDATE));
- EXPECT_FALSE(perm_folder.Get(IS_UNSYNCED));
- EXPECT_EQ(perm_folder.Get(BASE_VERSION), 10);
- EXPECT_EQ(perm_folder.Get(UNIQUE_CLIENT_TAG), "clientperm");
+ Entry pref(&trans, GET_BY_CLIENT_TAG, "tag");
+ ASSERT_TRUE(pref.good());
+ ASSERT_TRUE(pref.Get(ID).ServerKnows());
+ EXPECT_FALSE(pref.Get(IS_DEL));
+ EXPECT_FALSE(pref.Get(IS_UNAPPLIED_UPDATE));
+ EXPECT_FALSE(pref.Get(IS_UNSYNCED));
+ EXPECT_EQ(pref.Get(BASE_VERSION), 10);
+ EXPECT_EQ(pref.Get(UNIQUE_CLIENT_TAG), "tag");
}
}
@@ -3696,10 +3831,13 @@ TEST_F(SyncerTest, ClientTagUpdateClashesWithLocalEntry) {
EXPECT_TRUE(ids_.FromNumber(1) < ids_.FromNumber(2));
EXPECT_TRUE(ids_.FromNumber(3) < ids_.FromNumber(4));
- mock_server_->AddUpdateBookmark(1, 0, "One", 10, 100);
- mock_server_->SetLastUpdateClientTag("tag1");
- mock_server_->AddUpdateBookmark(4, 0, "Four", 11, 110);
- mock_server_->SetLastUpdateClientTag("tag2");
+ syncable::Id id1 = TestIdFactory::MakeServer("1");
+ mock_server_->AddUpdatePref(id1.GetServerId(), ids_.root().GetServerId(),
+ "tag1", 10, 100);
+
+ syncable::Id id4 = TestIdFactory::MakeServer("4");
+ mock_server_->AddUpdatePref(id4.GetServerId(), ids_.root().GetServerId(),
+ "tag2", 11, 110);
mock_server_->set_conflict_all_commits(true);
@@ -3713,11 +3851,10 @@ TEST_F(SyncerTest, ClientTagUpdateClashesWithLocalEntry) {
Entry tag1(&trans, GET_BY_CLIENT_TAG, "tag1");
ASSERT_TRUE(tag1.good());
ASSERT_TRUE(tag1.Get(ID).ServerKnows());
- ASSERT_TRUE(ids_.FromNumber(1) == tag1.Get(ID));
+ ASSERT_TRUE(id1 == tag1.Get(ID));
EXPECT_FALSE(tag1.Get(IS_DEL));
EXPECT_FALSE(tag1.Get(IS_UNAPPLIED_UPDATE));
EXPECT_FALSE(tag1.Get(IS_UNSYNCED));
- EXPECT_EQ("One", tag1.Get(NON_UNIQUE_NAME));
EXPECT_EQ(10, tag1.Get(BASE_VERSION));
EXPECT_EQ("tag1", tag1.Get(UNIQUE_CLIENT_TAG));
tag1_metahandle = tag1.Get(META_HANDLE);
@@ -3725,11 +3862,10 @@ TEST_F(SyncerTest, ClientTagUpdateClashesWithLocalEntry) {
Entry tag2(&trans, GET_BY_CLIENT_TAG, "tag2");
ASSERT_TRUE(tag2.good());
ASSERT_TRUE(tag2.Get(ID).ServerKnows());
- ASSERT_TRUE(ids_.FromNumber(4) == tag2.Get(ID));
+ ASSERT_TRUE(id4 == tag2.Get(ID));
EXPECT_FALSE(tag2.Get(IS_DEL));
EXPECT_FALSE(tag2.Get(IS_UNAPPLIED_UPDATE));
EXPECT_FALSE(tag2.Get(IS_UNSYNCED));
- EXPECT_EQ("Four", tag2.Get(NON_UNIQUE_NAME));
EXPECT_EQ(11, tag2.Get(BASE_VERSION));
EXPECT_EQ("tag2", tag2.Get(UNIQUE_CLIENT_TAG));
tag2_metahandle = tag2.Get(META_HANDLE);
@@ -3739,10 +3875,12 @@ TEST_F(SyncerTest, ClientTagUpdateClashesWithLocalEntry) {
ASSERT_EQ(2U, children.size());
}
- mock_server_->AddUpdateBookmark(2, 0, "Two", 12, 120);
- mock_server_->SetLastUpdateClientTag("tag1");
- mock_server_->AddUpdateBookmark(3, 0, "Three", 13, 130);
- mock_server_->SetLastUpdateClientTag("tag2");
+ syncable::Id id2 = TestIdFactory::MakeServer("2");
+ mock_server_->AddUpdatePref(id2.GetServerId(), ids_.root().GetServerId(),
+ "tag1", 12, 120);
+ syncable::Id id3 = TestIdFactory::MakeServer("3");
+ mock_server_->AddUpdatePref(id3.GetServerId(), ids_.root().GetServerId(),
+ "tag2", 13, 130);
SyncShareNudge();
{
@@ -3751,25 +3889,23 @@ TEST_F(SyncerTest, ClientTagUpdateClashesWithLocalEntry) {
Entry tag1(&trans, GET_BY_CLIENT_TAG, "tag1");
ASSERT_TRUE(tag1.good());
ASSERT_TRUE(tag1.Get(ID).ServerKnows());
- ASSERT_TRUE(ids_.FromNumber(1) == tag1.Get(ID))
+ ASSERT_EQ(id1, tag1.Get(ID))
<< "ID 1 should be kept, since it was less than ID 2.";
EXPECT_FALSE(tag1.Get(IS_DEL));
EXPECT_FALSE(tag1.Get(IS_UNAPPLIED_UPDATE));
EXPECT_FALSE(tag1.Get(IS_UNSYNCED));
EXPECT_EQ(10, tag1.Get(BASE_VERSION));
EXPECT_EQ("tag1", tag1.Get(UNIQUE_CLIENT_TAG));
- EXPECT_EQ("One", tag1.Get(NON_UNIQUE_NAME));
EXPECT_EQ(tag1_metahandle, tag1.Get(META_HANDLE));
Entry tag2(&trans, GET_BY_CLIENT_TAG, "tag2");
ASSERT_TRUE(tag2.good());
ASSERT_TRUE(tag2.Get(ID).ServerKnows());
- ASSERT_TRUE(ids_.FromNumber(3) == tag2.Get(ID))
+ ASSERT_EQ(id3, tag2.Get(ID))
<< "ID 3 should be kept, since it was less than ID 4.";
EXPECT_FALSE(tag2.Get(IS_DEL));
EXPECT_FALSE(tag2.Get(IS_UNAPPLIED_UPDATE));
EXPECT_FALSE(tag2.Get(IS_UNSYNCED));
- EXPECT_EQ("Three", tag2.Get(NON_UNIQUE_NAME));
EXPECT_EQ(13, tag2.Get(BASE_VERSION));
EXPECT_EQ("tag2", tag2.Get(UNIQUE_CLIENT_TAG));
EXPECT_EQ(tag2_metahandle, tag2.Get(META_HANDLE));
@@ -3786,32 +3922,35 @@ TEST_F(SyncerTest, ClientTagClashWithinBatchOfUpdates) {
EXPECT_TRUE(ids_.FromNumber(1) < ids_.FromNumber(4));
EXPECT_TRUE(ids_.FromNumber(201) < ids_.FromNumber(205));
- mock_server_->AddUpdateBookmark(1, 0, "One A", 1, 10);
- mock_server_->SetLastUpdateClientTag("tag a"); // Least ID: winner.
- mock_server_->AddUpdateBookmark(2, 0, "Two A", 11, 110);
- mock_server_->SetLastUpdateClientTag("tag a");
- mock_server_->AddUpdateBookmark(3, 0, "Three A", 12, 120);
- mock_server_->SetLastUpdateClientTag("tag a");
- mock_server_->AddUpdateBookmark(4, 0, "Four A", 13, 130);
- mock_server_->SetLastUpdateClientTag("tag a");
-
- mock_server_->AddUpdateBookmark(105, 0, "One B", 14, 140);
- mock_server_->SetLastUpdateClientTag("tag b");
- mock_server_->AddUpdateBookmark(102, 0, "Two B", 15, 150);
- mock_server_->SetLastUpdateClientTag("tag b");
- mock_server_->AddUpdateBookmark(101, 0, "Three B", 16, 160);
- mock_server_->SetLastUpdateClientTag("tag b"); // Least ID: winner.
- mock_server_->AddUpdateBookmark(104, 0, "Four B", 17, 170);
- mock_server_->SetLastUpdateClientTag("tag b");
-
- mock_server_->AddUpdateBookmark(205, 0, "One C", 18, 180);
- mock_server_->SetLastUpdateClientTag("tag c");
- mock_server_->AddUpdateBookmark(202, 0, "Two C", 19, 190);
- mock_server_->SetLastUpdateClientTag("tag c");
- mock_server_->AddUpdateBookmark(204, 0, "Three C", 20, 200);
- mock_server_->SetLastUpdateClientTag("tag c");
- mock_server_->AddUpdateBookmark(201, 0, "Four C", 21, 210);
- mock_server_->SetLastUpdateClientTag("tag c"); // Least ID: winner.
+ // Least ID: winner.
+ mock_server_->AddUpdatePref(ids_.FromNumber(1).GetServerId(),
+ ids_.root().GetServerId(), "tag a", 1, 10);
+ mock_server_->AddUpdatePref(ids_.FromNumber(2).GetServerId(),
+ ids_.root().GetServerId(), "tag a", 11, 110);
+ mock_server_->AddUpdatePref(ids_.FromNumber(3).GetServerId(),
+ ids_.root().GetServerId(), "tag a", 12, 120);
+ mock_server_->AddUpdatePref(ids_.FromNumber(4).GetServerId(),
+ ids_.root().GetServerId(), "tag a", 13, 130);
+
+ mock_server_->AddUpdatePref(ids_.FromNumber(105).GetServerId(),
+ ids_.root().GetServerId(), "tag b", 14, 140);
+ mock_server_->AddUpdatePref(ids_.FromNumber(102).GetServerId(),
+ ids_.root().GetServerId(), "tag b", 15, 150);
+ // Least ID: winner.
+ mock_server_->AddUpdatePref(ids_.FromNumber(101).GetServerId(),
+ ids_.root().GetServerId(), "tag b", 16, 160);
+ mock_server_->AddUpdatePref(ids_.FromNumber(104).GetServerId(),
+ ids_.root().GetServerId(), "tag b", 17, 170);
+
+ mock_server_->AddUpdatePref(ids_.FromNumber(205).GetServerId(),
+ ids_.root().GetServerId(), "tag c", 18, 180);
+ mock_server_->AddUpdatePref(ids_.FromNumber(202).GetServerId(),
+ ids_.root().GetServerId(), "tag c", 19, 190);
+ mock_server_->AddUpdatePref(ids_.FromNumber(204).GetServerId(),
+ ids_.root().GetServerId(), "tag c", 20, 200);
+ // Least ID: winner.
+ mock_server_->AddUpdatePref(ids_.FromNumber(201).GetServerId(),
+ ids_.root().GetServerId(), "tag c", 21, 210);
mock_server_->set_conflict_all_commits(true);
@@ -3827,7 +3966,6 @@ TEST_F(SyncerTest, ClientTagClashWithinBatchOfUpdates) {
EXPECT_FALSE(tag_a.Get(IS_DEL));
EXPECT_FALSE(tag_a.Get(IS_UNAPPLIED_UPDATE));
EXPECT_FALSE(tag_a.Get(IS_UNSYNCED));
- EXPECT_EQ("One A", tag_a.Get(NON_UNIQUE_NAME));
EXPECT_EQ(1, tag_a.Get(BASE_VERSION));
EXPECT_EQ("tag a", tag_a.Get(UNIQUE_CLIENT_TAG));
@@ -3838,7 +3976,6 @@ TEST_F(SyncerTest, ClientTagClashWithinBatchOfUpdates) {
EXPECT_FALSE(tag_b.Get(IS_DEL));
EXPECT_FALSE(tag_b.Get(IS_UNAPPLIED_UPDATE));
EXPECT_FALSE(tag_b.Get(IS_UNSYNCED));
- EXPECT_EQ("Three B", tag_b.Get(NON_UNIQUE_NAME));
EXPECT_EQ(16, tag_b.Get(BASE_VERSION));
EXPECT_EQ("tag b", tag_b.Get(UNIQUE_CLIENT_TAG));
@@ -3849,7 +3986,6 @@ TEST_F(SyncerTest, ClientTagClashWithinBatchOfUpdates) {
EXPECT_FALSE(tag_c.Get(IS_DEL));
EXPECT_FALSE(tag_c.Get(IS_UNAPPLIED_UPDATE));
EXPECT_FALSE(tag_c.Get(IS_UNSYNCED));
- EXPECT_EQ("Four C", tag_c.Get(NON_UNIQUE_NAME));
EXPECT_EQ(21, tag_c.Get(BASE_VERSION));
EXPECT_EQ("tag c", tag_c.Get(UNIQUE_CLIENT_TAG));
@@ -3879,9 +4015,9 @@ TEST_F(SyncerTest, UniqueServerTagUpdates) {
}
// Now download some tagged items as updates.
- mock_server_->AddUpdateDirectory(1, 0, "update1", 1, 10);
+ mock_server_->AddUpdateDirectory(1, 0, "update1", 1, 10, "", "");
mock_server_->SetLastUpdateServerTag("alpha");
- mock_server_->AddUpdateDirectory(2, 0, "update2", 2, 20);
+ mock_server_->AddUpdateDirectory(2, 0, "update2", 2, 20, "", "");
mock_server_->SetLastUpdateServerTag("bob");
SyncShareNudge();
@@ -3945,7 +4081,8 @@ TEST_F(SyncerTest, UpdateThenCommit) {
syncable::Id to_receive = ids_.NewServerId();
syncable::Id to_commit = ids_.NewLocalId();
- mock_server_->AddUpdateDirectory(to_receive, ids_.root(), "x", 1, 10);
+ mock_server_->AddUpdateDirectory(to_receive, ids_.root(), "x", 1, 10,
+ foreign_cache_guid(), "-1");
int64 commit_handle = CreateUnsyncedDirectory("y", to_commit);
SyncShareNudge();
@@ -3975,7 +4112,8 @@ TEST_F(SyncerTest, UpdateFailsThenDontCommit) {
syncable::Id to_receive = ids_.NewServerId();
syncable::Id to_commit = ids_.NewLocalId();
- mock_server_->AddUpdateDirectory(to_receive, ids_.root(), "x", 1, 10);
+ mock_server_->AddUpdateDirectory(to_receive, ids_.root(), "x", 1, 10,
+ foreign_cache_guid(), "-1");
int64 commit_handle = CreateUnsyncedDirectory("y", to_commit);
mock_server_->FailNextPostBufferToPathCall();
SyncShareNudge();
@@ -4003,12 +4141,14 @@ TEST_F(SyncerTest, ConfigureDownloadsTwoBatchesSuccess) {
syncable::Id node2 = ids_.NewServerId();
// Construct the first GetUpdates response.
- mock_server_->AddUpdateDirectory(node1, ids_.root(), "one", 1, 10);
+ mock_server_->AddUpdateDirectory(node1, ids_.root(), "one", 1, 10,
+ foreign_cache_guid(), "-2");
mock_server_->SetChangesRemaining(1);
mock_server_->NextUpdateBatch();
// Construct the second GetUpdates response.
- mock_server_->AddUpdateDirectory(node2, ids_.root(), "two", 1, 20);
+ mock_server_->AddUpdateDirectory(node2, ids_.root(), "two", 1, 20,
+ foreign_cache_guid(), "-2");
SyncShareConfigure();
@@ -4036,12 +4176,14 @@ TEST_F(SyncerTest, ConfigureFailsDontApplyUpdates) {
mock_server_->FailNthPostBufferToPathCall(2);
// Construct the first GetUpdates response.
- mock_server_->AddUpdateDirectory(node1, ids_.root(), "one", 1, 10);
+ mock_server_->AddUpdateDirectory(node1, ids_.root(), "one", 1, 10,
+ foreign_cache_guid(), "-1");
mock_server_->SetChangesRemaining(1);
mock_server_->NextUpdateBatch();
// Consutrct the second GetUpdates response.
- mock_server_->AddUpdateDirectory(node2, ids_.root(), "two", 1, 20);
+ mock_server_->AddUpdateDirectory(node2, ids_.root(), "two", 1, 20,
+ foreign_cache_guid(), "-2");
SyncShareConfigure();
@@ -4129,6 +4271,7 @@ class SyncerUndeletionTest : public SyncerTest {
EXPECT_FALSE(perm_folder.Get(IS_UNAPPLIED_UPDATE));
EXPECT_FALSE(perm_folder.Get(ID).ServerKnows());
metahandle_ = perm_folder.Get(META_HANDLE);
+ local_id_ = perm_folder.Get(ID);
}
void Delete() {
@@ -4223,6 +4366,7 @@ class SyncerUndeletionTest : public SyncerTest {
protected:
const std::string client_tag_;
+ syncable::Id local_id_;
int64 metahandle_;
};
@@ -4262,7 +4406,10 @@ TEST_F(SyncerUndeletionTest, UndeleteDuringCommit) {
// None of this should trigger any conflict detection -- it is perfectly
// normal to recieve updates from our own commits.
mock_server_->SetMidCommitCallback(base::Closure());
- mock_server_->AddUpdateFromLastCommit();
+ sync_pb::SyncEntity* update = mock_server_->AddUpdateFromLastCommit();
+ update->set_originator_cache_guid(local_cache_guid());
+ update->set_originator_client_item_id(local_id_.GetServerId());
+
SyncShareNudge();
EXPECT_EQ(0, session_->status_controller().TotalNumConflictingItems());
EXPECT_EQ(1, mock_server_->GetAndClearNumGetUpdatesRequests());
@@ -4293,7 +4440,9 @@ TEST_F(SyncerUndeletionTest, UndeleteBeforeCommit) {
// Now, encounter a GetUpdates corresponding to the just-committed
// update.
- mock_server_->AddUpdateFromLastCommit();
+ sync_pb::SyncEntity* update = mock_server_->AddUpdateFromLastCommit();
+ update->set_originator_cache_guid(local_cache_guid());
+ update->set_originator_client_item_id(local_id_.GetServerId());
SyncShareNudge();
EXPECT_EQ(0, session_->status_controller().TotalNumConflictingItems());
EXPECT_EQ(1, mock_server_->GetAndClearNumGetUpdatesRequests());
@@ -4341,7 +4490,9 @@ TEST_F(SyncerUndeletionTest, UndeleteAfterDeleteAndGetUpdates) {
EXPECT_EQ(0, session_->status_controller().TotalNumConflictingItems());
ExpectSyncedAndCreated();
- mock_server_->AddUpdateFromLastCommit();
+ sync_pb::SyncEntity* update = mock_server_->AddUpdateFromLastCommit();
+ update->set_originator_cache_guid(local_cache_guid());
+ update->set_originator_client_item_id(local_id_.GetServerId());
SyncShareNudge();
EXPECT_EQ(1, mock_server_->GetAndClearNumGetUpdatesRequests());
EXPECT_EQ(0, session_->status_controller().TotalNumConflictingItems());
@@ -4388,7 +4539,9 @@ TEST_F(SyncerUndeletionTest, UndeleteAfterOtherClientDeletes) {
ExpectSyncedAndCreated();
// Add a delete from the server.
- mock_server_->AddUpdateFromLastCommit();
+ sync_pb::SyncEntity* update1 = mock_server_->AddUpdateFromLastCommit();
+ update1->set_originator_cache_guid(local_cache_guid());
+ update1->set_originator_client_item_id(local_id_.GetServerId());
SyncShareNudge();
EXPECT_EQ(1, mock_server_->GetAndClearNumGetUpdatesRequests());
EXPECT_EQ(0, session_->status_controller().TotalNumConflictingItems());
@@ -4413,7 +4566,9 @@ TEST_F(SyncerUndeletionTest, UndeleteAfterOtherClientDeletes) {
// Now, encounter a GetUpdates corresponding to the just-committed
// deletion update. The undeletion should prevail.
- mock_server_->AddUpdateFromLastCommit();
+ sync_pb::SyncEntity* update2 = mock_server_->AddUpdateFromLastCommit();
+ update2->set_originator_cache_guid(local_cache_guid());
+ update2->set_originator_client_item_id(local_id_.GetServerId());
SyncShareNudge();
EXPECT_EQ(0, session_->status_controller().TotalNumConflictingItems());
EXPECT_EQ(1, mock_server_->GetAndClearNumGetUpdatesRequests());
@@ -4449,7 +4604,9 @@ TEST_F(SyncerUndeletionTest, UndeleteAfterOtherClientDeletesImmediately) {
// Now, encounter a GetUpdates corresponding to the just-committed
// deletion update. The undeletion should prevail.
- mock_server_->AddUpdateFromLastCommit();
+ sync_pb::SyncEntity* update = mock_server_->AddUpdateFromLastCommit();
+ update->set_originator_cache_guid(local_cache_guid());
+ update->set_originator_client_item_id(local_id_.GetServerId());
SyncShareNudge();
EXPECT_EQ(0, session_->status_controller().TotalNumConflictingItems());
EXPECT_EQ(1, mock_server_->GetAndClearNumGetUpdatesRequests());
@@ -4466,7 +4623,9 @@ TEST_F(SyncerUndeletionTest, OtherClientUndeletes) {
ExpectSyncedAndCreated();
// Get the updates of our just-committed entry.
- mock_server_->AddUpdateFromLastCommit();
+ sync_pb::SyncEntity* update = mock_server_->AddUpdateFromLastCommit();
+ update->set_originator_cache_guid(local_cache_guid());
+ update->set_originator_client_item_id(local_id_.GetServerId());
SyncShareNudge();
EXPECT_EQ(1, mock_server_->GetAndClearNumGetUpdatesRequests());
EXPECT_EQ(0, session_->status_controller().TotalNumConflictingItems());
@@ -4493,7 +4652,8 @@ TEST_F(SyncerUndeletionTest, OtherClientUndeletes) {
// Some other client undeletes the item.
mock_server_->AddUpdateBookmark(Get(metahandle_, ID),
Get(metahandle_, PARENT_ID),
- "Thadeusz", 100, 1000);
+ "Thadeusz", 100, 1000,
+ local_cache_guid(), local_id_.GetServerId());
mock_server_->SetLastUpdateClientTag(client_tag_);
SyncShareNudge();
EXPECT_EQ(0, session_->status_controller().TotalNumConflictingItems());
@@ -4512,7 +4672,9 @@ TEST_F(SyncerUndeletionTest, OtherClientUndeletesImmediately) {
ExpectSyncedAndCreated();
// Get the updates of our just-committed entry.
- mock_server_->AddUpdateFromLastCommit();
+ sync_pb::SyncEntity* update = mock_server_->AddUpdateFromLastCommit();
+ update->set_originator_cache_guid(local_cache_guid());
+ update->set_originator_client_item_id(local_id_.GetServerId());
SyncShareNudge();
EXPECT_EQ(1, mock_server_->GetAndClearNumGetUpdatesRequests());
EXPECT_EQ(0, session_->status_controller().TotalNumConflictingItems());
@@ -4532,7 +4694,8 @@ TEST_F(SyncerUndeletionTest, OtherClientUndeletesImmediately) {
// commit.
mock_server_->AddUpdateBookmark(Get(metahandle_, ID),
Get(metahandle_, PARENT_ID),
- "Thadeusz", 100, 1000);
+ "Thadeusz", 100, 1000,
+ local_cache_guid(), local_id_.GetServerId());
mock_server_->SetLastUpdateClientTag(client_tag_);
SyncShareNudge();
EXPECT_EQ(0, session_->status_controller().TotalNumConflictingItems());
@@ -4579,7 +4742,9 @@ class SyncerPositionUpdateTest : public SyncerTest {
string id = string("ServerId") + base::Int64ToString(next_update_id_++);
string name = "my name is my id -- " + id;
int revision = next_revision_++;
- mock_server_->AddUpdateDirectory(id, kRootId, name, revision, revision);
+ mock_server_->AddUpdateDirectory(id, kRootId, name, revision, revision,
+ foreign_cache_guid(),
+ ids_.NewLocalId().GetServerId());
mock_server_->SetLastUpdatePosition(position);
position_map_.insert(
PosMap::value_type(position, Id::CreateFromServerId(id)));
@@ -4674,7 +4839,8 @@ class SyncerPositionTiebreakingTest : public SyncerTest {
void Add(const Id& id) {
int revision = next_revision_++;
mock_server_->AddUpdateDirectory(id.GetServerId(), kRootId,
- id.GetServerId(), revision, revision);
+ id.GetServerId(), revision, revision,
+ foreign_cache_guid(), ids_.NewLocalId().GetServerId());
// The update position doesn't vary.
mock_server_->SetLastUpdatePosition(90210);
}
diff --git a/sync/test/engine/mock_connection_manager.cc b/sync/test/engine/mock_connection_manager.cc
index cc0c1cb..1718699 100644
--- a/sync/test/engine/mock_connection_manager.cc
+++ b/sync/test/engine/mock_connection_manager.cc
@@ -202,12 +202,16 @@ sync_pb::SyncEntity* MockConnectionManager::AddUpdateDirectory(
int parent_id,
string name,
int64 version,
- int64 sync_ts) {
+ int64 sync_ts,
+ std::string originator_cache_guid,
+ std::string originator_client_item_id) {
return AddUpdateDirectory(TestIdFactory::FromNumber(id),
TestIdFactory::FromNumber(parent_id),
name,
version,
- sync_ts);
+ sync_ts,
+ originator_cache_guid,
+ originator_client_item_id);
}
void MockConnectionManager::SetGUClientCommand(
@@ -223,17 +227,27 @@ void MockConnectionManager::SetCommitClientCommand(
sync_pb::SyncEntity* MockConnectionManager::AddUpdateBookmark(
int id, int parent_id,
string name, int64 version,
- int64 sync_ts) {
+ int64 sync_ts,
+ string originator_client_item_id,
+ string originator_cache_guid) {
return AddUpdateBookmark(TestIdFactory::FromNumber(id),
TestIdFactory::FromNumber(parent_id),
name,
version,
- sync_ts);
+ sync_ts,
+ originator_client_item_id,
+ originator_cache_guid);
}
sync_pb::SyncEntity* MockConnectionManager::AddUpdateSpecifics(
- int id, int parent_id, string name, int64 version, int64 sync_ts,
- bool is_dir, int64 position, const sync_pb::EntitySpecifics& specifics) {
+ int id,
+ int parent_id,
+ string name,
+ int64 version,
+ int64 sync_ts,
+ bool is_dir,
+ int64 position,
+ const sync_pb::EntitySpecifics& specifics) {
sync_pb::SyncEntity* ent = AddUpdateMeta(
TestIdFactory::FromNumber(id).GetServerId(),
TestIdFactory::FromNumber(parent_id).GetServerId(),
@@ -244,8 +258,28 @@ sync_pb::SyncEntity* MockConnectionManager::AddUpdateSpecifics(
return ent;
}
+sync_pb::SyncEntity* MockConnectionManager::AddUpdateSpecifics(
+ int id,
+ int parent_id,
+ string name,
+ int64 version,
+ int64 sync_ts,
+ bool is_dir,
+ int64 position,
+ const sync_pb::EntitySpecifics& specifics,
+ string originator_cache_guid,
+ string originator_client_item_id) {
+ sync_pb::SyncEntity* ent = AddUpdateSpecifics(
+ id, parent_id, name, version, sync_ts, is_dir, position, specifics);
+ ent->set_originator_cache_guid(originator_cache_guid);
+ ent->set_originator_client_item_id(originator_client_item_id);
+ return ent;
+}
+
sync_pb::SyncEntity* MockConnectionManager::SetNigori(
- int id, int64 version,int64 sync_ts,
+ int id,
+ int64 version,
+ int64 sync_ts,
const sync_pb::EntitySpecifics& specifics) {
sync_pb::SyncEntity* ent = GetUpdateResponse()->add_entries();
ent->set_id_string(TestIdFactory::FromNumber(id).GetServerId());
@@ -263,6 +297,23 @@ sync_pb::SyncEntity* MockConnectionManager::SetNigori(
return ent;
}
+sync_pb::SyncEntity* MockConnectionManager::AddUpdatePref(string id,
+ string parent_id,
+ string client_tag,
+ int64 version,
+ int64 sync_ts) {
+ sync_pb::SyncEntity* ent =
+ AddUpdateMeta(id, parent_id, " ", version, sync_ts);
+
+ ent->set_client_defined_unique_tag(client_tag);
+
+ sync_pb::EntitySpecifics specifics;
+ AddDefaultFieldValue(PREFERENCES, &specifics);
+ ent->mutable_specifics()->CopyFrom(specifics);
+
+ return ent;
+}
+
sync_pb::SyncEntity* MockConnectionManager::AddUpdateFull(
string id, string parent_id,
string name, int64 version,
@@ -295,16 +346,28 @@ sync_pb::SyncEntity* MockConnectionManager::AddUpdateDirectory(
string parent_id,
string name,
int64 version,
- int64 sync_ts) {
- return AddUpdateFull(id, parent_id, name, version, sync_ts, true);
+ int64 sync_ts,
+ std::string originator_cache_guid,
+ std::string originator_client_item_id) {
+ sync_pb::SyncEntity* ret =
+ AddUpdateFull(id, parent_id, name, version, sync_ts, true);
+ ret->set_originator_cache_guid(originator_cache_guid);
+ ret->set_originator_client_item_id(originator_client_item_id);
+ return ret;
}
sync_pb::SyncEntity* MockConnectionManager::AddUpdateBookmark(
string id,
string parent_id,
string name, int64 version,
- int64 sync_ts) {
- return AddUpdateFull(id, parent_id, name, version, sync_ts, false);
+ int64 sync_ts,
+ string originator_cache_guid,
+ string originator_client_item_id) {
+ sync_pb::SyncEntity* ret =
+ AddUpdateFull(id, parent_id, name, version, sync_ts, false);
+ ret->set_originator_cache_guid(originator_cache_guid);
+ ret->set_originator_client_item_id(originator_client_item_id);
+ return ret;
}
sync_pb::SyncEntity* MockConnectionManager::AddUpdateFromLastCommit() {
@@ -542,17 +605,29 @@ void MockConnectionManager::ProcessCommit(
}
sync_pb::SyncEntity* MockConnectionManager::AddUpdateDirectory(
- syncable::Id id, syncable::Id parent_id, string name, int64 version,
- int64 sync_ts) {
+ syncable::Id id,
+ syncable::Id parent_id,
+ string name,
+ int64 version,
+ int64 sync_ts,
+ string originator_cache_guid,
+ string originator_client_item_id) {
return AddUpdateDirectory(id.GetServerId(), parent_id.GetServerId(),
- name, version, sync_ts);
+ name, version, sync_ts, originator_cache_guid,
+ originator_client_item_id);
}
sync_pb::SyncEntity* MockConnectionManager::AddUpdateBookmark(
- syncable::Id id, syncable::Id parent_id, string name, int64 version,
- int64 sync_ts) {
+ syncable::Id id,
+ syncable::Id parent_id,
+ string name,
+ int64 version,
+ int64 sync_ts,
+ string originator_cache_guid,
+ string originator_client_item_id) {
return AddUpdateBookmark(id.GetServerId(), parent_id.GetServerId(),
- name, version, sync_ts);
+ name, version, sync_ts, originator_cache_guid,
+ originator_client_item_id);
}
sync_pb::SyncEntity* MockConnectionManager::GetMutableLastUpdate() {
diff --git a/sync/test/engine/mock_connection_manager.h b/sync/test/engine/mock_connection_manager.h
index 008887b..0818b72 100644
--- a/sync/test/engine/mock_connection_manager.h
+++ b/sync/test/engine/mock_connection_manager.h
@@ -56,44 +56,85 @@ class MockConnectionManager : public ServerConnectionManager {
// The SyncEntity returned is only valid until the Sync is completed
// (e.g. with SyncShare.) It allows to add further entity properties before
// sync, using SetLastXXX() methods and/or GetMutableLastUpdate().
- sync_pb::SyncEntity* AddUpdateDirectory(syncable::Id id,
- syncable::Id parent_id,
- std::string name,
- int64 version,
- int64 sync_ts);
+ sync_pb::SyncEntity* AddUpdateDirectory(
+ syncable::Id id,
+ syncable::Id parent_id,
+ std::string name,
+ int64 version,
+ int64 sync_ts,
+ std::string originator_cache_guid,
+ std::string originator_client_item_id);
sync_pb::SyncEntity* AddUpdateBookmark(syncable::Id id,
syncable::Id parent_id,
std::string name,
int64 version,
- int64 sync_ts);
+ int64 sync_ts,
+ std::string originator_cache_guid,
+ std::string originator_client_item_id);
// Versions of the AddUpdate functions that accept integer IDs.
- sync_pb::SyncEntity* AddUpdateDirectory(int id,
- int parent_id,
- std::string name,
- int64 version,
- int64 sync_ts);
+ sync_pb::SyncEntity* AddUpdateDirectory(
+ int id,
+ int parent_id,
+ std::string name,
+ int64 version,
+ int64 sync_ts,
+ std::string originator_cache_guid,
+ std::string originator_client_item_id);
sync_pb::SyncEntity* AddUpdateBookmark(int id,
int parent_id,
std::string name,
int64 version,
- int64 sync_ts);
+ int64 sync_ts,
+ std::string originator_cache_guid,
+ std::string originator_client_item_id);
// New protocol versions of the AddUpdate functions.
- sync_pb::SyncEntity* AddUpdateDirectory(std::string id,
- std::string parent_id,
- std::string name,
- int64 version,
- int64 sync_ts);
+ sync_pb::SyncEntity* AddUpdateDirectory(
+ std::string id,
+ std::string parent_id,
+ std::string name,
+ int64 version,
+ int64 sync_ts,
+ std::string originator_cache_guid,
+ std::string originator_client_item_id);
sync_pb::SyncEntity* AddUpdateBookmark(std::string id,
std::string parent_id,
std::string name,
int64 version,
- int64 sync_ts);
+ int64 sync_ts,
+ std::string originator_cache_guid,
+ std::string originator_client_item_id);
// Versions of the AddUpdate function that accept specifics.
- sync_pb::SyncEntity* AddUpdateSpecifics(int id, int parent_id,
- std::string name,int64 version, int64 sync_ts, bool is_dir,
- int64 position, const sync_pb::EntitySpecifics& specifics);
- sync_pb::SyncEntity* SetNigori(int id, int64 version, int64 sync_ts,
+ sync_pb::SyncEntity* AddUpdateSpecifics(
+ int id,
+ int parent_id,
+ std::string name,
+ int64 version,
+ int64 sync_ts,
+ bool is_dir,
+ int64 position,
const sync_pb::EntitySpecifics& specifics);
+ sync_pb::SyncEntity* AddUpdateSpecifics(
+ int id,
+ int parent_id,
+ std::string name,
+ int64 version,
+ int64 sync_ts,
+ bool is_dir,
+ int64 position,
+ const sync_pb::EntitySpecifics& specifics,
+ std::string originator_cache_guid,
+ std::string originator_client_item_id);
+ sync_pb::SyncEntity* SetNigori(
+ int id,
+ int64 version,
+ int64 sync_ts,
+ const sync_pb::EntitySpecifics& specifics);
+ // Unique client tag variant for adding items.
+ sync_pb::SyncEntity* AddUpdatePref(std::string id,
+ std::string parent_id,
+ std::string client_tag,
+ int64 version,
+ int64 sync_ts);
// Find the last commit sent by the client, and replay it for the next get
// updates command. This can be used to simulate the GetUpdates that happens