| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 // | 4 // |
| 5 // Mock ServerConnectionManager class for use in client regression tests. | 5 // Mock ServerConnectionManager class for use in client regression tests. |
| 6 | 6 |
| 7 #include "sync/test/engine/mock_connection_manager.h" | 7 #include "components/sync/test/engine/mock_connection_manager.h" |
| 8 | 8 |
| 9 #include <stdint.h> | 9 #include <stdint.h> |
| 10 | 10 |
| 11 #include <map> | 11 #include <map> |
| 12 | 12 |
| 13 #include "base/location.h" | 13 #include "base/location.h" |
| 14 #include "base/strings/stringprintf.h" | 14 #include "base/strings/stringprintf.h" |
| 15 #include "sync/engine/syncer_proto_util.h" | 15 #include "components/sync/engine_impl/syncer_proto_util.h" |
| 16 #include "sync/protocol/bookmark_specifics.pb.h" | 16 #include "components/sync/protocol/bookmark_specifics.pb.h" |
| 17 #include "sync/syncable/directory.h" | 17 #include "components/sync/syncable/directory.h" |
| 18 #include "sync/syncable/syncable_write_transaction.h" | 18 #include "components/sync/syncable/syncable_write_transaction.h" |
| 19 #include "sync/test/engine/test_id_factory.h" | 19 #include "components/sync/test/engine/test_id_factory.h" |
| 20 #include "testing/gtest/include/gtest/gtest.h" | 20 #include "testing/gtest/include/gtest/gtest.h" |
| 21 | 21 |
| 22 using std::find; | 22 using std::find; |
| 23 using std::map; | 23 using std::map; |
| 24 using std::string; | 24 using std::string; |
| 25 using sync_pb::ClientToServerMessage; | 25 using sync_pb::ClientToServerMessage; |
| 26 using sync_pb::CommitMessage; | 26 using sync_pb::CommitMessage; |
| 27 using sync_pb::CommitResponse; | 27 using sync_pb::CommitResponse; |
| 28 using sync_pb::GetUpdatesMessage; | 28 using sync_pb::GetUpdatesMessage; |
| 29 using sync_pb::SyncEnums; | 29 using sync_pb::SyncEnums; |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 66 commit_time_rename_prepended_string_ = prepend; | 66 commit_time_rename_prepended_string_ = prepend; |
| 67 } | 67 } |
| 68 | 68 |
| 69 void MockConnectionManager::SetMidCommitCallback( | 69 void MockConnectionManager::SetMidCommitCallback( |
| 70 const base::Closure& callback) { | 70 const base::Closure& callback) { |
| 71 mid_commit_callback_ = callback; | 71 mid_commit_callback_ = callback; |
| 72 } | 72 } |
| 73 | 73 |
| 74 void MockConnectionManager::SetMidCommitObserver( | 74 void MockConnectionManager::SetMidCommitObserver( |
| 75 MockConnectionManager::MidCommitObserver* observer) { | 75 MockConnectionManager::MidCommitObserver* observer) { |
| 76 mid_commit_observer_ = observer; | 76 mid_commit_observer_ = observer; |
| 77 } | 77 } |
| 78 | 78 |
| 79 bool MockConnectionManager::PostBufferToPath(PostBufferParams* params, | 79 bool MockConnectionManager::PostBufferToPath(PostBufferParams* params, |
| 80 const string& path, | 80 const string& path, |
| 81 const string& auth_token) { | 81 const string& auth_token) { |
| 82 ClientToServerMessage post; | 82 ClientToServerMessage post; |
| 83 CHECK(post.ParseFromString(params->buffer_in)); | 83 CHECK(post.ParseFromString(params->buffer_in)); |
| 84 CHECK(post.has_protocol_version()); | 84 CHECK(post.has_protocol_version()); |
| 85 CHECK(post.has_api_key()); | 85 CHECK(post.has_api_key()); |
| 86 CHECK(post.has_bag_of_chips()); | 86 CHECK(post.has_bag_of_chips()); |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 119 if (!server_reachable_) { | 119 if (!server_reachable_) { |
| 120 params->response.server_status = HttpResponse::CONNECTION_UNAVAILABLE; | 120 params->response.server_status = HttpResponse::CONNECTION_UNAVAILABLE; |
| 121 return false; | 121 return false; |
| 122 } | 122 } |
| 123 | 123 |
| 124 // Default to an ok connection. | 124 // Default to an ok connection. |
| 125 params->response.server_status = HttpResponse::SERVER_CONNECTION_OK; | 125 params->response.server_status = HttpResponse::SERVER_CONNECTION_OK; |
| 126 response.set_error_code(SyncEnums::SUCCESS); | 126 response.set_error_code(SyncEnums::SUCCESS); |
| 127 const string current_store_birthday = store_birthday(); | 127 const string current_store_birthday = store_birthday(); |
| 128 response.set_store_birthday(current_store_birthday); | 128 response.set_store_birthday(current_store_birthday); |
| 129 if (post.has_store_birthday() && post.store_birthday() != | 129 if (post.has_store_birthday() && |
| 130 current_store_birthday) { | 130 post.store_birthday() != current_store_birthday) { |
| 131 response.set_error_code(SyncEnums::NOT_MY_BIRTHDAY); | 131 response.set_error_code(SyncEnums::NOT_MY_BIRTHDAY); |
| 132 response.set_error_message("Merry Unbirthday!"); | 132 response.set_error_message("Merry Unbirthday!"); |
| 133 response.SerializeToString(¶ms->buffer_out); | 133 response.SerializeToString(¶ms->buffer_out); |
| 134 store_birthday_sent_ = true; | 134 store_birthday_sent_ = true; |
| 135 return true; | 135 return true; |
| 136 } | 136 } |
| 137 bool result = true; | 137 bool result = true; |
| 138 EXPECT_TRUE(!store_birthday_sent_ || post.has_store_birthday() || | 138 EXPECT_TRUE(!store_birthday_sent_ || post.has_store_birthday() || |
| 139 post.message_contents() == ClientToServerMessage::AUTHENTICATE || | 139 post.message_contents() == ClientToServerMessage::AUTHENTICATE || |
| 140 post.message_contents() == | 140 post.message_contents() == |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 199 sync_pb::SyncEntity_BookmarkData* data = entity->mutable_bookmarkdata(); | 199 sync_pb::SyncEntity_BookmarkData* data = entity->mutable_bookmarkdata(); |
| 200 data->set_bookmark_folder(is_folder); | 200 data->set_bookmark_folder(is_folder); |
| 201 | 201 |
| 202 if (!is_folder) { | 202 if (!is_folder) { |
| 203 data->set_bookmark_url("http://google.com"); | 203 data->set_bookmark_url("http://google.com"); |
| 204 } | 204 } |
| 205 } else { | 205 } else { |
| 206 entity->set_folder(is_folder); | 206 entity->set_folder(is_folder); |
| 207 entity->mutable_specifics()->mutable_bookmark(); | 207 entity->mutable_specifics()->mutable_bookmark(); |
| 208 if (!is_folder) { | 208 if (!is_folder) { |
| 209 entity->mutable_specifics()->mutable_bookmark()-> | 209 entity->mutable_specifics()->mutable_bookmark()->set_url( |
| 210 set_url("http://google.com"); | 210 "http://google.com"); |
| 211 } | 211 } |
| 212 } | 212 } |
| 213 } | 213 } |
| 214 | 214 |
| 215 sync_pb::SyncEntity* MockConnectionManager::AddUpdateDirectory( | 215 sync_pb::SyncEntity* MockConnectionManager::AddUpdateDirectory( |
| 216 int id, | 216 int id, |
| 217 int parent_id, | 217 int parent_id, |
| 218 const string& name, | 218 const string& name, |
| 219 int64_t version, | 219 int64_t version, |
| 220 int64_t sync_ts, | 220 int64_t sync_ts, |
| 221 const std::string& originator_cache_guid, | 221 const std::string& originator_cache_guid, |
| 222 const std::string& originator_client_item_id) { | 222 const std::string& originator_client_item_id) { |
| 223 return AddUpdateDirectory(TestIdFactory::FromNumber(id), | 223 return AddUpdateDirectory( |
| 224 TestIdFactory::FromNumber(parent_id), | 224 TestIdFactory::FromNumber(id), TestIdFactory::FromNumber(parent_id), name, |
| 225 name, | 225 version, sync_ts, originator_cache_guid, originator_client_item_id); |
| 226 version, | |
| 227 sync_ts, | |
| 228 originator_cache_guid, | |
| 229 originator_client_item_id); | |
| 230 } | 226 } |
| 231 | 227 |
| 232 void MockConnectionManager::SetGUClientCommand( | 228 void MockConnectionManager::SetGUClientCommand( |
| 233 sync_pb::ClientCommand* command) { | 229 sync_pb::ClientCommand* command) { |
| 234 gu_client_command_.reset(command); | 230 gu_client_command_.reset(command); |
| 235 } | 231 } |
| 236 | 232 |
| 237 void MockConnectionManager::SetCommitClientCommand( | 233 void MockConnectionManager::SetCommitClientCommand( |
| 238 sync_pb::ClientCommand* command) { | 234 sync_pb::ClientCommand* command) { |
| 239 commit_client_command_.reset(command); | 235 commit_client_command_.reset(command); |
| 240 } | 236 } |
| 241 | 237 |
| 242 void MockConnectionManager::SetTransientErrorId(syncable::Id id) { | 238 void MockConnectionManager::SetTransientErrorId(syncable::Id id) { |
| 243 transient_error_ids_.push_back(id); | 239 transient_error_ids_.push_back(id); |
| 244 } | 240 } |
| 245 | 241 |
| 246 sync_pb::SyncEntity* MockConnectionManager::AddUpdateBookmark( | 242 sync_pb::SyncEntity* MockConnectionManager::AddUpdateBookmark( |
| 247 int id, | 243 int id, |
| 248 int parent_id, | 244 int parent_id, |
| 249 const string& name, | 245 const string& name, |
| 250 int64_t version, | 246 int64_t version, |
| 251 int64_t sync_ts, | 247 int64_t sync_ts, |
| 252 const string& originator_client_item_id, | 248 const string& originator_client_item_id, |
| 253 const string& originator_cache_guid) { | 249 const string& originator_cache_guid) { |
| 254 return AddUpdateBookmark(TestIdFactory::FromNumber(id), | 250 return AddUpdateBookmark( |
| 255 TestIdFactory::FromNumber(parent_id), | 251 TestIdFactory::FromNumber(id), TestIdFactory::FromNumber(parent_id), name, |
| 256 name, | 252 version, sync_ts, originator_client_item_id, originator_cache_guid); |
| 257 version, | |
| 258 sync_ts, | |
| 259 originator_client_item_id, | |
| 260 originator_cache_guid); | |
| 261 } | 253 } |
| 262 | 254 |
| 263 sync_pb::SyncEntity* MockConnectionManager::AddUpdateSpecifics( | 255 sync_pb::SyncEntity* MockConnectionManager::AddUpdateSpecifics( |
| 264 int id, | 256 int id, |
| 265 int parent_id, | 257 int parent_id, |
| 266 const string& name, | 258 const string& name, |
| 267 int64_t version, | 259 int64_t version, |
| 268 int64_t sync_ts, | 260 int64_t sync_ts, |
| 269 bool is_dir, | 261 bool is_dir, |
| 270 int64_t position, | 262 int64_t position, |
| 271 const sync_pb::EntitySpecifics& specifics) { | 263 const sync_pb::EntitySpecifics& specifics) { |
| 272 sync_pb::SyncEntity* ent = AddUpdateMeta( | 264 sync_pb::SyncEntity* ent = |
| 273 TestIdFactory::FromNumber(id).GetServerId(), | 265 AddUpdateMeta(TestIdFactory::FromNumber(id).GetServerId(), |
| 274 TestIdFactory::FromNumber(parent_id).GetServerId(), | 266 TestIdFactory::FromNumber(parent_id).GetServerId(), name, |
| 275 name, version, sync_ts); | 267 version, sync_ts); |
| 276 ent->set_position_in_parent(position); | 268 ent->set_position_in_parent(position); |
| 277 ent->mutable_specifics()->CopyFrom(specifics); | 269 ent->mutable_specifics()->CopyFrom(specifics); |
| 278 ent->set_folder(is_dir); | 270 ent->set_folder(is_dir); |
| 279 return ent; | 271 return ent; |
| 280 } | 272 } |
| 281 | 273 |
| 282 sync_pb::SyncEntity* MockConnectionManager::AddUpdateSpecifics( | 274 sync_pb::SyncEntity* MockConnectionManager::AddUpdateSpecifics( |
| 283 int id, | 275 int id, |
| 284 int parent_id, | 276 int parent_id, |
| 285 const string& name, | 277 const string& name, |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 408 AddUpdateFull(id, parent_id, name, version, sync_ts, false); | 400 AddUpdateFull(id, parent_id, name, version, sync_ts, false); |
| 409 ret->set_originator_cache_guid(originator_cache_guid); | 401 ret->set_originator_cache_guid(originator_cache_guid); |
| 410 ret->set_originator_client_item_id(originator_client_item_id); | 402 ret->set_originator_client_item_id(originator_client_item_id); |
| 411 return ret; | 403 return ret; |
| 412 } | 404 } |
| 413 | 405 |
| 414 sync_pb::SyncEntity* MockConnectionManager::AddUpdateFromLastCommit() { | 406 sync_pb::SyncEntity* MockConnectionManager::AddUpdateFromLastCommit() { |
| 415 EXPECT_EQ(1, last_sent_commit().entries_size()); | 407 EXPECT_EQ(1, last_sent_commit().entries_size()); |
| 416 EXPECT_EQ(1, last_commit_response().entryresponse_size()); | 408 EXPECT_EQ(1, last_commit_response().entryresponse_size()); |
| 417 EXPECT_EQ(CommitResponse::SUCCESS, | 409 EXPECT_EQ(CommitResponse::SUCCESS, |
| 418 last_commit_response().entryresponse(0).response_type()); | 410 last_commit_response().entryresponse(0).response_type()); |
| 419 | 411 |
| 420 if (last_sent_commit().entries(0).deleted()) { | 412 if (last_sent_commit().entries(0).deleted()) { |
| 421 ModelType type = GetModelType(last_sent_commit().entries(0)); | 413 ModelType type = GetModelType(last_sent_commit().entries(0)); |
| 422 AddUpdateTombstone(syncable::Id::CreateFromServerId( | 414 AddUpdateTombstone(syncable::Id::CreateFromServerId( |
| 423 last_sent_commit().entries(0).id_string()), type); | 415 last_sent_commit().entries(0).id_string()), |
| 416 type); |
| 424 } else { | 417 } else { |
| 425 sync_pb::SyncEntity* ent = GetUpdateResponse()->add_entries(); | 418 sync_pb::SyncEntity* ent = GetUpdateResponse()->add_entries(); |
| 426 ent->CopyFrom(last_sent_commit().entries(0)); | 419 ent->CopyFrom(last_sent_commit().entries(0)); |
| 427 ent->clear_insert_after_item_id(); | 420 ent->clear_insert_after_item_id(); |
| 428 ent->clear_old_parent_id(); | 421 ent->clear_old_parent_id(); |
| 429 ent->set_position_in_parent( | 422 ent->set_position_in_parent( |
| 430 last_commit_response().entryresponse(0).position_in_parent()); | 423 last_commit_response().entryresponse(0).position_in_parent()); |
| 431 ent->set_version( | 424 ent->set_version(last_commit_response().entryresponse(0).version()); |
| 432 last_commit_response().entryresponse(0).version()); | 425 ent->set_id_string(last_commit_response().entryresponse(0).id_string()); |
| 433 ent->set_id_string( | |
| 434 last_commit_response().entryresponse(0).id_string()); | |
| 435 | 426 |
| 436 // This is the same hack as in AddUpdateMeta. See the comment in that | 427 // This is the same hack as in AddUpdateMeta. See the comment in that |
| 437 // function for more information. | 428 // function for more information. |
| 438 ent->set_originator_cache_guid(kCacheGuid); | 429 ent->set_originator_cache_guid(kCacheGuid); |
| 439 ent->set_originator_client_item_id( | 430 ent->set_originator_client_item_id( |
| 440 last_commit_response().entryresponse(0).id_string()); | 431 last_commit_response().entryresponse(0).id_string()); |
| 441 | 432 |
| 442 if (last_sent_commit().entries(0).has_unique_position()) { | 433 if (last_sent_commit().entries(0).has_unique_position()) { |
| 443 ent->mutable_unique_position()->CopyFrom( | 434 ent->mutable_unique_position()->CopyFrom( |
| 444 last_sent_commit().entries(0).unique_position()); | 435 last_sent_commit().entries(0).unique_position()); |
| 445 } | 436 } |
| 446 | 437 |
| 447 // Tests don't currently care about the following: | 438 // Tests don't currently care about the following: |
| 448 // parent_id_string, name, non_unique_name. | 439 // parent_id_string, name, non_unique_name. |
| 449 } | 440 } |
| 450 return GetMutableLastUpdate(); | 441 return GetMutableLastUpdate(); |
| 451 } | 442 } |
| 452 | 443 |
| 453 void MockConnectionManager::AddUpdateTombstone( | 444 void MockConnectionManager::AddUpdateTombstone(const syncable::Id& id, |
| 454 const syncable::Id& id, | 445 ModelType type) { |
| 455 ModelType type) { | |
| 456 // Tombstones have only the ID set and dummy values for the required fields. | 446 // Tombstones have only the ID set and dummy values for the required fields. |
| 457 sync_pb::SyncEntity* ent = GetUpdateResponse()->add_entries(); | 447 sync_pb::SyncEntity* ent = GetUpdateResponse()->add_entries(); |
| 458 ent->set_id_string(id.GetServerId()); | 448 ent->set_id_string(id.GetServerId()); |
| 459 ent->set_version(0); | 449 ent->set_version(0); |
| 460 ent->set_name(""); | 450 ent->set_name(""); |
| 461 ent->set_deleted(true); | 451 ent->set_deleted(true); |
| 462 | 452 |
| 463 // Make sure we can still extract the ModelType from this tombstone. | 453 // Make sure we can still extract the ModelType from this tombstone. |
| 464 AddDefaultFieldValue(type, ent->mutable_specifics()); | 454 AddDefaultFieldValue(type, ent->mutable_specifics()); |
| 465 } | 455 } |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 582 if (conflict_all_commits_) { | 572 if (conflict_all_commits_) { |
| 583 conflict = true; | 573 conflict = true; |
| 584 } else if (conflict_n_commits_ > 0) { | 574 } else if (conflict_n_commits_ > 0) { |
| 585 conflict = true; | 575 conflict = true; |
| 586 --conflict_n_commits_; | 576 --conflict_n_commits_; |
| 587 } | 577 } |
| 588 return conflict; | 578 return conflict; |
| 589 } | 579 } |
| 590 | 580 |
| 591 bool MockConnectionManager::ShouldTransientErrorThisId(syncable::Id id) { | 581 bool MockConnectionManager::ShouldTransientErrorThisId(syncable::Id id) { |
| 592 return find(transient_error_ids_.begin(), transient_error_ids_.end(), id) | 582 return find(transient_error_ids_.begin(), transient_error_ids_.end(), id) != |
| 593 != transient_error_ids_.end(); | 583 transient_error_ids_.end(); |
| 594 } | 584 } |
| 595 | 585 |
| 596 void MockConnectionManager::ProcessCommit( | 586 void MockConnectionManager::ProcessCommit( |
| 597 sync_pb::ClientToServerMessage* csm, | 587 sync_pb::ClientToServerMessage* csm, |
| 598 sync_pb::ClientToServerResponse* response_buffer) { | 588 sync_pb::ClientToServerResponse* response_buffer) { |
| 599 CHECK(csm->has_commit()); | 589 CHECK(csm->has_commit()); |
| 600 ASSERT_EQ(csm->message_contents(), ClientToServerMessage::COMMIT); | 590 ASSERT_EQ(csm->message_contents(), ClientToServerMessage::COMMIT); |
| 601 map <string, string> changed_ids; | 591 map<string, string> changed_ids; |
| 602 const CommitMessage& commit_message = csm->commit(); | 592 const CommitMessage& commit_message = csm->commit(); |
| 603 CommitResponse* commit_response = response_buffer->mutable_commit(); | 593 CommitResponse* commit_response = response_buffer->mutable_commit(); |
| 604 commit_messages_.push_back(new CommitMessage); | 594 commit_messages_.push_back(new CommitMessage); |
| 605 commit_messages_.back()->CopyFrom(commit_message); | 595 commit_messages_.back()->CopyFrom(commit_message); |
| 606 map<string, sync_pb::CommitResponse_EntryResponse*> response_map; | 596 map<string, sync_pb::CommitResponse_EntryResponse*> response_map; |
| 607 for (int i = 0; i < commit_message.entries_size() ; i++) { | 597 for (int i = 0; i < commit_message.entries_size(); i++) { |
| 608 const sync_pb::SyncEntity& entry = commit_message.entries(i); | 598 const sync_pb::SyncEntity& entry = commit_message.entries(i); |
| 609 CHECK(entry.has_id_string()); | 599 CHECK(entry.has_id_string()); |
| 610 string id_string = entry.id_string(); | 600 string id_string = entry.id_string(); |
| 611 ASSERT_LT(entry.name().length(), 256ul) << " name probably too long. True " | 601 ASSERT_LT(entry.name().length(), 256ul) |
| 612 "server name checking not implemented"; | 602 << " name probably too long. True " |
| 603 "server name checking not implemented"; |
| 613 syncable::Id id; | 604 syncable::Id id; |
| 614 if (entry.version() == 0) { | 605 if (entry.version() == 0) { |
| 615 // Relies on our new item string id format. (string representation of a | 606 // Relies on our new item string id format. (string representation of a |
| 616 // negative number). | 607 // negative number). |
| 617 id = syncable::Id::CreateFromClientString(id_string); | 608 id = syncable::Id::CreateFromClientString(id_string); |
| 618 } else { | 609 } else { |
| 619 id = syncable::Id::CreateFromServerId(id_string); | 610 id = syncable::Id::CreateFromServerId(id_string); |
| 620 } | 611 } |
| 621 committed_ids_.push_back(id); | 612 committed_ids_.push_back(id); |
| 622 | 613 |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 668 } | 659 } |
| 669 | 660 |
| 670 sync_pb::SyncEntity* MockConnectionManager::AddUpdateDirectory( | 661 sync_pb::SyncEntity* MockConnectionManager::AddUpdateDirectory( |
| 671 syncable::Id id, | 662 syncable::Id id, |
| 672 syncable::Id parent_id, | 663 syncable::Id parent_id, |
| 673 const string& name, | 664 const string& name, |
| 674 int64_t version, | 665 int64_t version, |
| 675 int64_t sync_ts, | 666 int64_t sync_ts, |
| 676 const string& originator_cache_guid, | 667 const string& originator_cache_guid, |
| 677 const string& originator_client_item_id) { | 668 const string& originator_client_item_id) { |
| 678 return AddUpdateDirectory(id.GetServerId(), parent_id.GetServerId(), | 669 return AddUpdateDirectory(id.GetServerId(), parent_id.GetServerId(), name, |
| 679 name, version, sync_ts, originator_cache_guid, | 670 version, sync_ts, originator_cache_guid, |
| 680 originator_client_item_id); | 671 originator_client_item_id); |
| 681 } | 672 } |
| 682 | 673 |
| 683 sync_pb::SyncEntity* MockConnectionManager::AddUpdateBookmark( | 674 sync_pb::SyncEntity* MockConnectionManager::AddUpdateBookmark( |
| 684 syncable::Id id, | 675 syncable::Id id, |
| 685 syncable::Id parent_id, | 676 syncable::Id parent_id, |
| 686 const string& name, | 677 const string& name, |
| 687 int64_t version, | 678 int64_t version, |
| 688 int64_t sync_ts, | 679 int64_t sync_ts, |
| 689 const string& originator_cache_guid, | 680 const string& originator_cache_guid, |
| 690 const string& originator_client_item_id) { | 681 const string& originator_client_item_id) { |
| 691 return AddUpdateBookmark(id.GetServerId(), parent_id.GetServerId(), | 682 return AddUpdateBookmark(id.GetServerId(), parent_id.GetServerId(), name, |
| 692 name, version, sync_ts, originator_cache_guid, | 683 version, sync_ts, originator_cache_guid, |
| 693 originator_client_item_id); | 684 originator_client_item_id); |
| 694 } | 685 } |
| 695 | 686 |
| 696 sync_pb::SyncEntity* MockConnectionManager::GetMutableLastUpdate() { | 687 sync_pb::SyncEntity* MockConnectionManager::GetMutableLastUpdate() { |
| 697 sync_pb::GetUpdatesResponse* updates = GetUpdateResponse(); | 688 sync_pb::GetUpdatesResponse* updates = GetUpdateResponse(); |
| 698 EXPECT_GT(updates->entries_size(), 0); | 689 EXPECT_GT(updates->entries_size(), 0); |
| 699 return updates->mutable_entries()->Mutable(updates->entries_size() - 1); | 690 return updates->mutable_entries()->Mutable(updates->entries_size() - 1); |
| 700 } | 691 } |
| 701 | 692 |
| 702 void MockConnectionManager::NextUpdateBatch() { | 693 void MockConnectionManager::NextUpdateBatch() { |
| 703 update_queue_.push_back(sync_pb::GetUpdatesResponse::default_instance()); | 694 update_queue_.push_back(sync_pb::GetUpdatesResponse::default_instance()); |
| 704 SetChangesRemaining(0); | 695 SetChangesRemaining(0); |
| 705 ApplyToken(); | 696 ApplyToken(); |
| 706 } | 697 } |
| 707 | 698 |
| 708 const CommitMessage& MockConnectionManager::last_sent_commit() const { | 699 const CommitMessage& MockConnectionManager::last_sent_commit() const { |
| 709 EXPECT_TRUE(!commit_messages_.empty()); | 700 EXPECT_TRUE(!commit_messages_.empty()); |
| 710 return *commit_messages_.back(); | 701 return *commit_messages_.back(); |
| 711 } | 702 } |
| 712 | 703 |
| 713 const CommitResponse& MockConnectionManager::last_commit_response() const { | 704 const CommitResponse& MockConnectionManager::last_commit_response() const { |
| 714 EXPECT_TRUE(!commit_responses_.empty()); | 705 EXPECT_TRUE(!commit_responses_.empty()); |
| 715 return *commit_responses_.back(); | 706 return *commit_responses_.back(); |
| 716 } | 707 } |
| 717 | 708 |
| 718 const sync_pb::ClientToServerMessage& | 709 const sync_pb::ClientToServerMessage& MockConnectionManager::last_request() |
| 719 MockConnectionManager::last_request() const { | 710 const { |
| 720 EXPECT_TRUE(!requests_.empty()); | 711 EXPECT_TRUE(!requests_.empty()); |
| 721 return requests_.back(); | 712 return requests_.back(); |
| 722 } | 713 } |
| 723 | 714 |
| 724 const std::vector<sync_pb::ClientToServerMessage>& | 715 const std::vector<sync_pb::ClientToServerMessage>& |
| 725 MockConnectionManager::requests() const { | 716 MockConnectionManager::requests() const { |
| 726 return requests_; | 717 return requests_; |
| 727 } | 718 } |
| 728 | 719 |
| 729 bool MockConnectionManager::IsModelTypePresentInSpecifics( | 720 bool MockConnectionManager::IsModelTypePresentInSpecifics( |
| 730 const google::protobuf::RepeatedPtrField< | 721 const google::protobuf::RepeatedPtrField<sync_pb::DataTypeProgressMarker>& |
| 731 sync_pb::DataTypeProgressMarker>& filter, | 722 filter, |
| 732 ModelType value) { | 723 ModelType value) { |
| 733 int data_type_id = GetSpecificsFieldNumberFromModelType(value); | 724 int data_type_id = GetSpecificsFieldNumberFromModelType(value); |
| 734 for (int i = 0; i < filter.size(); ++i) { | 725 for (int i = 0; i < filter.size(); ++i) { |
| 735 if (filter.Get(i).data_type_id() == data_type_id) { | 726 if (filter.Get(i).data_type_id() == data_type_id) { |
| 736 return true; | 727 return true; |
| 737 } | 728 } |
| 738 } | 729 } |
| 739 return false; | 730 return false; |
| 740 } | 731 } |
| 741 | 732 |
| 742 sync_pb::DataTypeProgressMarker const* | 733 sync_pb::DataTypeProgressMarker const* |
| 743 MockConnectionManager::GetProgressMarkerForType( | 734 MockConnectionManager::GetProgressMarkerForType( |
| 744 const google::protobuf::RepeatedPtrField< | 735 const google::protobuf::RepeatedPtrField<sync_pb::DataTypeProgressMarker>& |
| 745 sync_pb::DataTypeProgressMarker>& filter, | 736 filter, |
| 746 ModelType value) { | 737 ModelType value) { |
| 747 int data_type_id = GetSpecificsFieldNumberFromModelType(value); | 738 int data_type_id = GetSpecificsFieldNumberFromModelType(value); |
| 748 for (int i = 0; i < filter.size(); ++i) { | 739 for (int i = 0; i < filter.size(); ++i) { |
| 749 if (filter.Get(i).data_type_id() == data_type_id) { | 740 if (filter.Get(i).data_type_id() == data_type_id) { |
| 750 return &(filter.Get(i)); | 741 return &(filter.Get(i)); |
| 751 } | 742 } |
| 752 } | 743 } |
| 753 return NULL; | 744 return NULL; |
| 754 } | 745 } |
| 755 | 746 |
| 756 void MockConnectionManager::SetServerReachable() { | 747 void MockConnectionManager::SetServerReachable() { |
| (...skipping 11 matching lines...) Expand all Loading... |
| 768 server_status_ = HttpResponse::SERVER_CONNECTION_OK; | 759 server_status_ = HttpResponse::SERVER_CONNECTION_OK; |
| 769 } | 760 } |
| 770 } | 761 } |
| 771 | 762 |
| 772 void MockConnectionManager::SetServerStatus( | 763 void MockConnectionManager::SetServerStatus( |
| 773 HttpResponse::ServerConnectionCode server_status) { | 764 HttpResponse::ServerConnectionCode server_status) { |
| 774 server_status_ = server_status; | 765 server_status_ = server_status; |
| 775 } | 766 } |
| 776 | 767 |
| 777 } // namespace syncer | 768 } // namespace syncer |
| OLD | NEW |