Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 #include <set> | 5 #include <set> |
| 6 #include <string> | 6 #include <string> |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
| 10 | 10 |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 75 using syncable::CREATE; | 75 using syncable::CREATE; |
| 76 using syncable::GET_BY_SERVER_TAG; | 76 using syncable::GET_BY_SERVER_TAG; |
| 77 using syncable::INVALID; | 77 using syncable::INVALID; |
| 78 using syncable::MutableEntry; | 78 using syncable::MutableEntry; |
| 79 using syncable::SERVER_PARENT_ID; | 79 using syncable::SERVER_PARENT_ID; |
| 80 using syncable::SERVER_SPECIFICS; | 80 using syncable::SERVER_SPECIFICS; |
| 81 using syncable::SPECIFICS; | 81 using syncable::SPECIFICS; |
| 82 using syncable::UNITTEST; | 82 using syncable::UNITTEST; |
| 83 using syncable::WriterTag; | 83 using syncable::WriterTag; |
| 84 using syncable::WriteTransaction; | 84 using syncable::WriteTransaction; |
| 85 using sync_api::BaseNode; | |
|
Nicolas Zea
2012/04/19 23:55:43
nit: remove this or remove BaseNode:: prefix's bel
tim (not reviewing)
2012/04/20 18:27:04
As discussed offline, using decl only lets us drop
| |
| 85 using testing::_; | 86 using testing::_; |
| 86 using testing::DoAll; | 87 using testing::DoAll; |
| 87 using testing::DoDefault; | 88 using testing::DoDefault; |
| 88 using testing::ElementsAre; | 89 using testing::ElementsAre; |
| 89 using testing::Eq; | 90 using testing::Eq; |
| 90 using testing::Invoke; | 91 using testing::Invoke; |
| 91 using testing::Mock; | 92 using testing::Mock; |
| 92 using testing::Return; | 93 using testing::Return; |
| 93 using testing::SaveArg; | 94 using testing::SaveArg; |
| 94 using testing::SetArgumentPointee; | 95 using testing::SetArgumentPointee; |
| (...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 429 token_service_->IssueAuthTokenForTest(GaiaConstants::kSyncService, "token"); | 430 token_service_->IssueAuthTokenForTest(GaiaConstants::kSyncService, "token"); |
| 430 | 431 |
| 431 service_->RegisterDataTypeController(data_type_controller); | 432 service_->RegisterDataTypeController(data_type_controller); |
| 432 service_->Initialize(); | 433 service_->Initialize(); |
| 433 MessageLoop::current()->Run(); | 434 MessageLoop::current()->Run(); |
| 434 } | 435 } |
| 435 | 436 |
| 436 bool AddAutofillSyncNode(const AutofillEntry& entry) { | 437 bool AddAutofillSyncNode(const AutofillEntry& entry) { |
| 437 sync_api::WriteTransaction trans(FROM_HERE, service_->GetUserShare()); | 438 sync_api::WriteTransaction trans(FROM_HERE, service_->GetUserShare()); |
| 438 sync_api::ReadNode autofill_root(&trans); | 439 sync_api::ReadNode autofill_root(&trans); |
| 439 if (!autofill_root.InitByTagLookup( | 440 if (autofill_root.InitByTagLookup( |
| 440 syncable::ModelTypeToRootTag(syncable::AUTOFILL))) | 441 syncable::ModelTypeToRootTag(syncable::AUTOFILL)) != |
| 442 BaseNode::INIT_OK) { | |
| 441 return false; | 443 return false; |
| 444 } | |
| 442 | 445 |
| 443 sync_api::WriteNode node(&trans); | 446 sync_api::WriteNode node(&trans); |
| 444 std::string tag = AutocompleteSyncableService::KeyToTag( | 447 std::string tag = AutocompleteSyncableService::KeyToTag( |
| 445 UTF16ToUTF8(entry.key().name()), UTF16ToUTF8(entry.key().value())); | 448 UTF16ToUTF8(entry.key().name()), UTF16ToUTF8(entry.key().value())); |
| 446 if (!node.InitUniqueByCreation(syncable::AUTOFILL, autofill_root, tag)) | 449 if (!node.InitUniqueByCreation(syncable::AUTOFILL, autofill_root, tag)) |
| 447 return false; | 450 return false; |
| 448 | 451 |
| 449 sync_pb::EntitySpecifics specifics; | 452 sync_pb::EntitySpecifics specifics; |
| 450 AutocompleteSyncableService::WriteAutofillEntry(entry, &specifics); | 453 AutocompleteSyncableService::WriteAutofillEntry(entry, &specifics); |
| 451 sync_pb::AutofillSpecifics* autofill_specifics = | 454 sync_pb::AutofillSpecifics* autofill_specifics = |
| 452 specifics.mutable_autofill(); | 455 specifics.mutable_autofill(); |
| 453 node.SetAutofillSpecifics(*autofill_specifics); | 456 node.SetAutofillSpecifics(*autofill_specifics); |
| 454 return true; | 457 return true; |
| 455 } | 458 } |
| 456 | 459 |
| 457 bool AddAutofillSyncNode(const AutofillProfile& profile) { | 460 bool AddAutofillSyncNode(const AutofillProfile& profile) { |
| 458 sync_api::WriteTransaction trans(FROM_HERE, service_->GetUserShare()); | 461 sync_api::WriteTransaction trans(FROM_HERE, service_->GetUserShare()); |
| 459 sync_api::ReadNode autofill_root(&trans); | 462 sync_api::ReadNode autofill_root(&trans); |
| 460 if (!autofill_root.InitByTagLookup(kAutofillProfileTag)) | 463 if (autofill_root.InitByTagLookup(kAutofillProfileTag) != |
| 464 BaseNode::INIT_OK) { | |
| 461 return false; | 465 return false; |
| 466 } | |
| 462 sync_api::WriteNode node(&trans); | 467 sync_api::WriteNode node(&trans); |
| 463 std::string tag = profile.guid(); | 468 std::string tag = profile.guid(); |
| 464 if (!node.InitUniqueByCreation(syncable::AUTOFILL_PROFILE, | 469 if (!node.InitUniqueByCreation(syncable::AUTOFILL_PROFILE, |
| 465 autofill_root, tag)) | 470 autofill_root, tag)) |
| 466 return false; | 471 return false; |
| 467 sync_pb::EntitySpecifics specifics; | 472 sync_pb::EntitySpecifics specifics; |
| 468 AutofillProfileSyncableService::WriteAutofillProfile(profile, &specifics); | 473 AutofillProfileSyncableService::WriteAutofillProfile(profile, &specifics); |
| 469 sync_pb::AutofillProfileSpecifics* profile_specifics = | 474 sync_pb::AutofillProfileSpecifics* profile_specifics = |
| 470 specifics.mutable_autofill_profile(); | 475 specifics.mutable_autofill_profile(); |
| 471 node.SetAutofillProfileSpecifics(*profile_specifics); | 476 node.SetAutofillProfileSpecifics(*profile_specifics); |
| 472 return true; | 477 return true; |
| 473 } | 478 } |
| 474 | 479 |
| 475 bool GetAutofillEntriesFromSyncDB(std::vector<AutofillEntry>* entries, | 480 bool GetAutofillEntriesFromSyncDB(std::vector<AutofillEntry>* entries, |
| 476 std::vector<AutofillProfile>* profiles) { | 481 std::vector<AutofillProfile>* profiles) { |
| 477 sync_api::ReadTransaction trans(FROM_HERE, service_->GetUserShare()); | 482 sync_api::ReadTransaction trans(FROM_HERE, service_->GetUserShare()); |
| 478 sync_api::ReadNode autofill_root(&trans); | 483 sync_api::ReadNode autofill_root(&trans); |
| 479 if (!autofill_root.InitByTagLookup( | 484 if (autofill_root.InitByTagLookup( |
| 480 syncable::ModelTypeToRootTag(syncable::AUTOFILL))) | 485 syncable::ModelTypeToRootTag(syncable::AUTOFILL)) != |
| 486 BaseNode::INIT_OK) { | |
| 481 return false; | 487 return false; |
| 488 } | |
| 482 | 489 |
| 483 int64 child_id = autofill_root.GetFirstChildId(); | 490 int64 child_id = autofill_root.GetFirstChildId(); |
| 484 while (child_id != sync_api::kInvalidId) { | 491 while (child_id != sync_api::kInvalidId) { |
| 485 sync_api::ReadNode child_node(&trans); | 492 sync_api::ReadNode child_node(&trans); |
| 486 if (!child_node.InitByIdLookup(child_id)) | 493 if (child_node.InitByIdLookup(child_id) != BaseNode::INIT_OK) |
| 487 return false; | 494 return false; |
| 488 | 495 |
| 489 const sync_pb::AutofillSpecifics& autofill( | 496 const sync_pb::AutofillSpecifics& autofill( |
| 490 child_node.GetAutofillSpecifics()); | 497 child_node.GetAutofillSpecifics()); |
| 491 if (autofill.has_value()) { | 498 if (autofill.has_value()) { |
| 492 AutofillKey key(UTF8ToUTF16(autofill.name()), | 499 AutofillKey key(UTF8ToUTF16(autofill.name()), |
| 493 UTF8ToUTF16(autofill.value())); | 500 UTF8ToUTF16(autofill.value())); |
| 494 std::vector<base::Time> timestamps; | 501 std::vector<base::Time> timestamps; |
| 495 int timestamps_count = autofill.usage_timestamp_size(); | 502 int timestamps_count = autofill.usage_timestamp_size(); |
| 496 for (int i = 0; i < timestamps_count; ++i) { | 503 for (int i = 0; i < timestamps_count; ++i) { |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 507 } | 514 } |
| 508 child_id = child_node.GetSuccessorId(); | 515 child_id = child_node.GetSuccessorId(); |
| 509 } | 516 } |
| 510 return true; | 517 return true; |
| 511 } | 518 } |
| 512 | 519 |
| 513 bool GetAutofillProfilesFromSyncDBUnderProfileNode( | 520 bool GetAutofillProfilesFromSyncDBUnderProfileNode( |
| 514 std::vector<AutofillProfile>* profiles) { | 521 std::vector<AutofillProfile>* profiles) { |
| 515 sync_api::ReadTransaction trans(FROM_HERE, service_->GetUserShare()); | 522 sync_api::ReadTransaction trans(FROM_HERE, service_->GetUserShare()); |
| 516 sync_api::ReadNode autofill_root(&trans); | 523 sync_api::ReadNode autofill_root(&trans); |
| 517 if (!autofill_root.InitByTagLookup(kAutofillProfileTag)) | 524 if (autofill_root.InitByTagLookup(kAutofillProfileTag) != |
| 525 BaseNode::INIT_OK) { | |
| 518 return false; | 526 return false; |
| 527 } | |
| 519 | 528 |
| 520 int64 child_id = autofill_root.GetFirstChildId(); | 529 int64 child_id = autofill_root.GetFirstChildId(); |
| 521 while (child_id != sync_api::kInvalidId) { | 530 while (child_id != sync_api::kInvalidId) { |
| 522 sync_api::ReadNode child_node(&trans); | 531 sync_api::ReadNode child_node(&trans); |
| 523 if (!child_node.InitByIdLookup(child_id)) | 532 if (child_node.InitByIdLookup(child_id) != BaseNode::INIT_OK) |
| 524 return false; | 533 return false; |
| 525 | 534 |
| 526 const sync_pb::AutofillProfileSpecifics& autofill( | 535 const sync_pb::AutofillProfileSpecifics& autofill( |
| 527 child_node.GetAutofillProfileSpecifics()); | 536 child_node.GetAutofillProfileSpecifics()); |
| 528 AutofillProfile p; | 537 AutofillProfile p; |
| 529 p.set_guid(autofill.guid()); | 538 p.set_guid(autofill.guid()); |
| 530 AutofillProfileSyncableService::OverwriteProfileWithServerData( | 539 AutofillProfileSyncableService::OverwriteProfileWithServerData( |
| 531 autofill, &p); | 540 autofill, &p); |
| 532 profiles->push_back(p); | 541 profiles->push_back(p); |
| 533 child_id = child_node.GetSuccessorId(); | 542 child_id = child_node.GetSuccessorId(); |
| (...skipping 696 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1230 std::vector<AutofillEntry> sync_entries; | 1239 std::vector<AutofillEntry> sync_entries; |
| 1231 std::vector<AutofillProfile> sync_profiles; | 1240 std::vector<AutofillProfile> sync_profiles; |
| 1232 ASSERT_TRUE(GetAutofillEntriesFromSyncDB(&sync_entries, &sync_profiles)); | 1241 ASSERT_TRUE(GetAutofillEntriesFromSyncDB(&sync_entries, &sync_profiles)); |
| 1233 EXPECT_EQ(3U, sync_entries.size()); | 1242 EXPECT_EQ(3U, sync_entries.size()); |
| 1234 EXPECT_EQ(0U, sync_profiles.size()); | 1243 EXPECT_EQ(0U, sync_profiles.size()); |
| 1235 for (size_t i = 0; i < sync_entries.size(); i++) { | 1244 for (size_t i = 0; i < sync_entries.size(); i++) { |
| 1236 DVLOG(1) << "Entry " << i << ": " << sync_entries[i].key().name() | 1245 DVLOG(1) << "Entry " << i << ": " << sync_entries[i].key().name() |
| 1237 << ", " << sync_entries[i].key().value(); | 1246 << ", " << sync_entries[i].key().value(); |
| 1238 } | 1247 } |
| 1239 } | 1248 } |
| OLD | NEW |