Index: components/autofill/core/browser/webdata/autofill_profile_syncable_service_unittest.cc |
diff --git a/components/autofill/core/browser/webdata/autofill_profile_syncable_service_unittest.cc b/components/autofill/core/browser/webdata/autofill_profile_syncable_service_unittest.cc |
index ddf6982c1c3cf6a8e8971511907957ea01852dcb..9b92208b6c222b08f39aa85bca0bec92f663129e 100644 |
--- a/components/autofill/core/browser/webdata/autofill_profile_syncable_service_unittest.cc |
+++ b/components/autofill/core/browser/webdata/autofill_profile_syncable_service_unittest.cc |
@@ -134,8 +134,8 @@ scoped_ptr<AutofillProfile> ConstructCompleteProfile() { |
new AutofillProfile(kGuid1, kHttpsOrigin)); |
std::vector<base::string16> names; |
- names.push_back(ASCIIToUTF16("John K. Doe")); |
- names.push_back(ASCIIToUTF16("Jane Luise Smith")); |
+ names.push_back(ASCIIToUTF16("John K. Doe, Jr.")); |
+ names.push_back(ASCIIToUTF16("Jane Luise Smith MD")); |
profile->SetRawMultiInfo(NAME_FULL, names); |
std::vector<base::string16> emails; |
@@ -180,10 +180,12 @@ syncer::SyncData ConstructCompleteSyncData() { |
specifics->add_name_first("John"); |
specifics->add_name_middle("K."); |
specifics->add_name_last("Doe"); |
+ specifics->add_name_full("John K. Doe, Jr."); |
specifics->add_name_first("Jane"); |
specifics->add_name_middle("Luise"); |
specifics->add_name_last("Smith"); |
+ specifics->add_name_full("Jane Luise Smith MD"); |
specifics->add_email_address("user@example.com"); |
specifics->add_email_address("superuser@example.org"); |
@@ -446,6 +448,7 @@ TEST_F(AutofillProfileSyncableServiceTest, MergeDataEmptyOrigins) { |
autofill_specifics->add_name_first("John"); |
autofill_specifics->add_name_middle(std::string()); |
autofill_specifics->add_name_last(std::string()); |
+ autofill_specifics->add_name_full("John"); |
autofill_specifics->add_email_address(std::string()); |
autofill_specifics->add_phone_home_whole_number(std::string()); |
autofill_specifics->set_address_home_line1("1 1st st"); |
@@ -854,6 +857,7 @@ TEST_F(AutofillProfileSyncableServiceTest, MergeDataEmptyStreetAddress) { |
autofill_specifics->add_name_first(std::string()); |
autofill_specifics->add_name_middle(std::string()); |
autofill_specifics->add_name_last(std::string()); |
+ autofill_specifics->add_name_full(std::string()); |
autofill_specifics->add_email_address(std::string()); |
autofill_specifics->add_phone_home_whole_number(std::string()); |
autofill_specifics->set_address_home_line1("123 Example St."); |
@@ -889,6 +893,7 @@ TEST_F(AutofillProfileSyncableServiceTest, EmptySyncPreservesOrigin) { |
autofill_specifics->add_name_first("John"); |
autofill_specifics->add_name_middle(std::string()); |
autofill_specifics->add_name_last(std::string()); |
+ autofill_specifics->add_name_full("John"); |
autofill_specifics->add_email_address(std::string()); |
autofill_specifics->add_phone_home_whole_number(std::string()); |
EXPECT_FALSE(autofill_specifics->has_origin()); |
@@ -930,6 +935,7 @@ TEST_F(AutofillProfileSyncableServiceTest, NoLanguageCodeNoSync) { |
autofill_specifics->add_name_first(std::string()); |
autofill_specifics->add_name_middle(std::string()); |
autofill_specifics->add_name_last(std::string()); |
+ autofill_specifics->add_name_full(std::string()); |
autofill_specifics->add_email_address(std::string()); |
autofill_specifics->add_phone_home_whole_number(std::string()); |
EXPECT_FALSE(autofill_specifics->has_address_home_language_code()); |
@@ -966,6 +972,7 @@ TEST_F(AutofillProfileSyncableServiceTest, SyncUpdatesEmptyLanguageCode) { |
autofill_specifics->add_name_first(std::string()); |
autofill_specifics->add_name_middle(std::string()); |
autofill_specifics->add_name_last(std::string()); |
+ autofill_specifics->add_name_full(std::string()); |
autofill_specifics->add_email_address(std::string()); |
autofill_specifics->add_phone_home_whole_number(std::string()); |
autofill_specifics->set_address_home_language_code("en"); |
@@ -1008,6 +1015,7 @@ TEST_F(AutofillProfileSyncableServiceTest, SyncUpdatesIncorrectLanguageCode) { |
autofill_specifics->add_name_first(std::string()); |
autofill_specifics->add_name_middle(std::string()); |
autofill_specifics->add_name_last(std::string()); |
+ autofill_specifics->add_name_full(std::string()); |
autofill_specifics->add_email_address(std::string()); |
autofill_specifics->add_phone_home_whole_number(std::string()); |
autofill_specifics->set_address_home_language_code("en"); |
@@ -1051,6 +1059,7 @@ TEST_F(AutofillProfileSyncableServiceTest, EmptySyncPreservesLanguageCode) { |
autofill_specifics->add_name_first("John"); |
autofill_specifics->add_name_middle(std::string()); |
autofill_specifics->add_name_last(std::string()); |
+ autofill_specifics->add_name_full("John"); |
autofill_specifics->add_email_address(std::string()); |
autofill_specifics->add_phone_home_whole_number(std::string()); |
EXPECT_FALSE(autofill_specifics->has_address_home_language_code()); |
@@ -1096,4 +1105,76 @@ TEST_F(AutofillProfileSyncableServiceTest, LanguageCodePropagates) { |
EXPECT_EQ("en", specifics.address_home_language_code()); |
} |
+// Missing full name field should not generate sync events. |
+TEST_F(AutofillProfileSyncableServiceTest, NoFullNameNoSync) { |
+ std::vector<AutofillProfile*> profiles_from_web_db; |
+ |
+ // Local autofill profile has an empty full name. |
+ AutofillProfile profile(kGuid1, kHttpsOrigin); |
+ profile.SetRawInfo(NAME_FIRST, ASCIIToUTF16("John")); |
+ profiles_from_web_db.push_back(new AutofillProfile(profile)); |
+ |
+ // Remote data does not have a full name. |
+ sync_pb::EntitySpecifics specifics; |
+ sync_pb::AutofillProfileSpecifics* autofill_specifics = |
+ specifics.mutable_autofill_profile(); |
+ autofill_specifics->set_guid(profile.guid()); |
+ autofill_specifics->set_origin(profile.origin()); |
+ autofill_specifics->add_name_first(std::string("John")); |
+ autofill_specifics->add_name_middle(std::string()); |
+ autofill_specifics->add_name_last(std::string()); |
+ autofill_specifics->add_email_address(std::string()); |
+ autofill_specifics->add_phone_home_whole_number(std::string()); |
+ |
+ syncer::SyncDataList data_list; |
+ data_list.push_back( |
+ syncer::SyncData::CreateLocalData( |
+ profile.guid(), profile.guid(), specifics)); |
+ |
+ // Expect no changes to local and remote data. |
+ MockAutofillProfileSyncableService::DataBundle expected_empty_bundle; |
+ syncer::SyncChangeList expected_empty_change_list; |
+ |
+ MergeDataAndStartSyncing(profiles_from_web_db, data_list, |
+ expected_empty_bundle, expected_empty_change_list); |
+ autofill_syncable_service_.StopSyncing(syncer::AUTOFILL_PROFILE); |
+} |
+ |
+TEST_F(AutofillProfileSyncableServiceTest, EmptySyncPreservesFullName) { |
+ std::vector<AutofillProfile*> profiles_from_web_db; |
+ |
+ // Local autofill profile has a full name. |
+ AutofillProfile profile(kGuid1, kHttpsOrigin); |
+ profile.SetRawInfo(NAME_FULL, ASCIIToUTF16("John Jacob Smith, Jr")); |
+ profiles_from_web_db.push_back(new AutofillProfile(profile)); |
+ |
+ // Remote data does not have a full name value. |
+ sync_pb::EntitySpecifics specifics; |
+ sync_pb::AutofillProfileSpecifics* autofill_specifics = |
+ specifics.mutable_autofill_profile(); |
+ autofill_specifics->set_guid(profile.guid()); |
+ autofill_specifics->set_origin(profile.origin()); |
+ autofill_specifics->add_name_first(std::string("John")); |
+ autofill_specifics->add_name_middle(std::string("Jacob")); |
+ autofill_specifics->add_name_last(std::string("Smith")); |
+ |
+ syncer::SyncDataList data_list; |
+ data_list.push_back( |
+ syncer::SyncData::CreateLocalData( |
+ profile.guid(), profile.guid(), specifics)); |
+ |
+ // Expect local autofill profile to still have the same full name after sync. |
+ MockAutofillProfileSyncableService::DataBundle expected_bundle; |
+ AutofillProfile expected_profile(profile.guid(), profile.origin()); |
+ expected_profile.SetRawInfo(NAME_FULL, ASCIIToUTF16("John Jacob Smith, Jr")); |
+ expected_bundle.profiles_to_update.push_back(&expected_profile); |
+ |
+ // Expect no changes to remote data. |
+ syncer::SyncChangeList expected_empty_change_list; |
+ |
+ MergeDataAndStartSyncing(profiles_from_web_db, data_list, |
+ expected_bundle, expected_empty_change_list); |
+ autofill_syncable_service_.StopSyncing(syncer::AUTOFILL_PROFILE); |
+} |
+ |
} // namespace autofill |