Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(180)

Unified Diff: components/autofill/core/browser/personal_data_manager_unittest.cc

Issue 1143253012: More work on removing variants from Autofill (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: work around iOS lameness Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/autofill/core/browser/personal_data_manager_unittest.cc
diff --git a/components/autofill/core/browser/personal_data_manager_unittest.cc b/components/autofill/core/browser/personal_data_manager_unittest.cc
index de7273a4e7dd072abe33468fc676ce4b3dc80eb7..245e0e1725468212fcab3e3fa4cd94455e9bc746 100644
--- a/components/autofill/core/browser/personal_data_manager_unittest.cc
+++ b/components/autofill/core/browser/personal_data_manager_unittest.cc
@@ -1283,10 +1283,10 @@ TEST_F(PersonalDataManagerTest, AggregateSameProfileWithConflict) {
base::MessageLoop::current()->Run();
AutofillProfile expected(base::GenerateGUID(), "https://www.example.com");
- test::SetProfileInfo(
- &expected, "George", NULL, "Washington", "theprez@gmail.com", NULL,
- "1600 Pennsylvania Avenue", "Suite A", "San Francisco", "California",
- "94102", NULL, "(650) 555-6666");
+ test::SetProfileInfo(&expected, "George", nullptr, "Washington",
+ "theprez@gmail.com", nullptr, "1600 Pennsylvania Avenue",
+ "Suite A", "San Francisco", "California", "94102",
+ nullptr, "(650) 555-6666");
const std::vector<AutofillProfile*>& results1 = personal_data_->GetProfiles();
ASSERT_EQ(1U, results1.size());
EXPECT_EQ(0, expected.Compare(*results1[0]));
@@ -1317,8 +1317,8 @@ TEST_F(PersonalDataManagerTest, AggregateSameProfileWithConflict) {
// Country gets added.
test::CreateTestFormField("Country:", "country", "USA", "text", &field);
form2.fields.push_back(field);
- // Phone gets updated.
- test::CreateTestFormField("Phone:", "phone", "6502231234", "text", &field);
+ // Same phone number with different formatting doesn't create a new profile.
+ test::CreateTestFormField("Phone:", "phone", "650-555-6666", "text", &field);
form2.fields.push_back(field);
FormStructure form_structure2(form2);
@@ -1334,11 +1334,8 @@ TEST_F(PersonalDataManagerTest, AggregateSameProfileWithConflict) {
const std::vector<AutofillProfile*>& results2 = personal_data_->GetProfiles();
- // Add multi-valued phone number to expectation. Also, country gets added.
- std::vector<base::string16> values;
- expected.GetRawMultiInfo(PHONE_HOME_WHOLE_NUMBER, &values);
- values.push_back(ASCIIToUTF16("(650) 223-1234"));
- expected.SetRawMultiInfo(PHONE_HOME_WHOLE_NUMBER, values);
+ // Phone formatting is updated. Also, country gets added.
+ expected.SetRawInfo(PHONE_HOME_WHOLE_NUMBER, ASCIIToUTF16("650-555-6666"));
expected.SetRawInfo(ADDRESS_HOME_COUNTRY, ASCIIToUTF16("US"));
ASSERT_EQ(1U, results2.size());
EXPECT_EQ(0, expected.Compare(*results2[0]));
@@ -2136,7 +2133,9 @@ TEST_F(PersonalDataManagerTest, AggregateSameCreditCardWithSeparators) {
}
// Ensure that if a verified profile already exists, aggregated profiles cannot
-// modify it in any way.
+// modify it in any way. This also checks the profile merging/matching algorithm
+// works: if either the full name OR all the non-empty name pieces match, the
+// profile is a match.
TEST_F(PersonalDataManagerTest, AggregateExistingVerifiedProfileWithConflict) {
// Start with a verified profile.
AutofillProfile profile(base::GenerateGUID(), "Chrome settings");
@@ -2157,14 +2156,14 @@ TEST_F(PersonalDataManagerTest, AggregateExistingVerifiedProfileWithConflict) {
// Simulate a form submission with conflicting info.
FormData form;
FormFieldData field;
- test::CreateTestFormField(
- "First name:", "first_name", "Marion", "text", &field);
+ test::CreateTestFormField("First name:", "first_name", "Marion Mitchell",
+ "text", &field);
form.fields.push_back(field);
test::CreateTestFormField(
"Last name:", "last_name", "Morrison", "text", &field);
form.fields.push_back(field);
- test::CreateTestFormField(
- "Email:", "email", "other.email@example.com", "text", &field);
+ test::CreateTestFormField("Email:", "email", "johnwayne@me.xyz", "text",
+ &field);
form.fields.push_back(field);
test::CreateTestFormField(
"Address:", "address1", "123 Zoo St.", "text", &field);
@@ -2192,6 +2191,29 @@ TEST_F(PersonalDataManagerTest, AggregateExistingVerifiedProfileWithConflict) {
const std::vector<AutofillProfile*>& results = personal_data_->GetProfiles();
ASSERT_EQ(1U, results.size());
EXPECT_EQ(0, profile.Compare(*results[0]));
+
+ // Try the same thing, but without "Mitchell". The profiles should still match
+ // because the non empty name pieces (first and last) match that stored in the
+ // profile.
+ test::CreateTestFormField("First name:", "first_name", "Marion", "text",
+ &field);
+ form.fields[0] = field;
+
+ FormStructure form_structure2(form);
+ form_structure2.DetermineHeuristicTypes();
+ EXPECT_TRUE(
+ personal_data_->ImportFormData(form_structure2, &imported_credit_card));
+ EXPECT_FALSE(imported_credit_card);
+
+ // Wait for the refresh, which in this case is a no-op.
+ EXPECT_CALL(personal_data_observer_, OnPersonalDataChanged())
+ .WillOnce(QuitMainMessageLoop());
+ base::MessageLoop::current()->Run();
+
+ // Expect that no new profile is saved.
+ const std::vector<AutofillProfile*>& results2 = personal_data_->GetProfiles();
+ ASSERT_EQ(1U, results2.size());
+ EXPECT_EQ(0, profile.Compare(*results2[0]));
}
// Ensure that if a verified credit card already exists, aggregated credit cards
@@ -2265,7 +2287,8 @@ TEST_F(PersonalDataManagerTest, SaveImportedProfileWithVerifiedData) {
AutofillProfile new_verified_profile = profile;
new_verified_profile.set_guid(base::GenerateGUID());
new_verified_profile.set_origin("Chrome settings");
- new_verified_profile.SetRawInfo(COMPANY_NAME, ASCIIToUTF16("Fizzbang, Inc."));
+ new_verified_profile.SetRawInfo(PHONE_HOME_WHOLE_NUMBER,
+ ASCIIToUTF16("1 234 567-8910"));
EXPECT_TRUE(new_verified_profile.IsVerified());
personal_data_->SaveImportedProfile(new_verified_profile);
@@ -2275,8 +2298,7 @@ TEST_F(PersonalDataManagerTest, SaveImportedProfileWithVerifiedData) {
.WillOnce(QuitMainMessageLoop());
base::MessageLoop::current()->Run();
- // Expect that the existing profile is not modified, and instead the new
- // profile is added.
+ // The new profile should be merged into the existing one.
const std::vector<AutofillProfile*>& results = personal_data_->GetProfiles();
ASSERT_EQ(1U, results.size());
EXPECT_EQ(0, new_verified_profile.Compare(*results[0]));
@@ -2303,7 +2325,8 @@ TEST_F(PersonalDataManagerTest, SaveImportedProfileWithExistingVerifiedData) {
AutofillProfile new_verified_profile = profile;
new_verified_profile.set_guid(base::GenerateGUID());
- new_verified_profile.SetRawInfo(COMPANY_NAME, ASCIIToUTF16("Fizzbang, Inc."));
+ new_verified_profile.SetRawInfo(PHONE_HOME_WHOLE_NUMBER,
+ ASCIIToUTF16("1 234 567-8910"));
EXPECT_TRUE(new_verified_profile.IsVerified());
personal_data_->SaveImportedProfile(new_verified_profile);
@@ -2314,11 +2337,9 @@ TEST_F(PersonalDataManagerTest, SaveImportedProfileWithExistingVerifiedData) {
base::MessageLoop::current()->Run();
// The new profile should be merged into the existing one.
- AutofillProfile expected_profile = profile;
- expected_profile.SetRawInfo(COMPANY_NAME, ASCIIToUTF16("Fizzbang, Inc."));
const std::vector<AutofillProfile*>& results = personal_data_->GetProfiles();
ASSERT_EQ(1U, results.size());
- EXPECT_EQ(expected_profile, *results[0]);
+ EXPECT_EQ(0, new_verified_profile.Compare(*results[0]));
}
// Ensure that verified credit cards can be saved via SaveImportedCreditCard.

Powered by Google App Engine
This is Rietveld 408576698