Index: chrome/browser/autofill/personal_data_manager_unittest.cc |
diff --git a/chrome/browser/autofill/personal_data_manager_unittest.cc b/chrome/browser/autofill/personal_data_manager_unittest.cc |
index 41b051faee4daeda3d5a28adb5d4ce90726b3081..c709f0906ad0304a9dc5b1afcd6d1f7c16b40fee 100644 |
--- a/chrome/browser/autofill/personal_data_manager_unittest.cc |
+++ b/chrome/browser/autofill/personal_data_manager_unittest.cc |
@@ -23,6 +23,8 @@ |
#include "testing/gmock/include/gmock/gmock.h" |
#include "testing/gtest/include/gtest/gtest.h" |
+using webkit_glue::FormData; |
+ |
ACTION(QuitUIMessageLoop) { |
DCHECK(ChromeThread::CurrentlyOn(ChromeThread::UI)); |
MessageLoop::current()->Quit(); |
@@ -178,19 +180,16 @@ TEST_F(PersonalDataManagerTest, SetProfiles) { |
// TODO(jhawkins): Test SetCreditCards w/out a WebDataService in the profile. |
TEST_F(PersonalDataManagerTest, SetCreditCards) { |
CreditCard creditcard0(string16(), 0); |
- autofill_unittest::SetCreditCardInfo(&creditcard0, |
- "Corporate", "John Dillinger", "Visa", |
- "123456789012", "01", "2010", "123", "Chicago", "Indianapolis"); |
+ autofill_unittest::SetCreditCardInfo(&creditcard0, "Corporate", |
+ "John Dillinger", "Visa", "123456789012", "01", "2010", "Chicago"); |
CreditCard creditcard1(string16(), 0); |
- autofill_unittest::SetCreditCardInfo(&creditcard1, |
- "Personal", "Bonnie Parker", "Mastercard", |
- "098765432109", "12", "2012", "987", "Dallas", ""); |
+ autofill_unittest::SetCreditCardInfo(&creditcard1, "Personal", |
+ "Bonnie Parker", "Mastercard", "098765432109", "12", "2012", "Dallas"); |
CreditCard creditcard2(string16(), 0); |
- autofill_unittest::SetCreditCardInfo(&creditcard2, |
- "Savings", "Clyde Barrow", "American Express", |
- "777666888555", "04", "2015", "445", "Home", "Farm"); |
+ autofill_unittest::SetCreditCardInfo(&creditcard2, "Savings", "Clyde Barrow", |
+ "American Express", "777666888555", "04", "2015", "Home"); |
// This will verify that the web database has been loaded and the notification |
// sent out. |
@@ -347,12 +346,21 @@ TEST_F(PersonalDataManagerTest, Refresh) { |
} |
TEST_F(PersonalDataManagerTest, ImportFormData) { |
- webkit_glue::FormData form; |
+ FormData form; |
+ webkit_glue::FormField field; |
+ autofill_unittest::CreateTestFormField( |
+ "First name:", "first_name", "George", "text", &field); |
+ form.fields.push_back(field); |
+ autofill_unittest::CreateTestFormField( |
+ "Last name:", "last_name", "Washington", "text", &field); |
+ form.fields.push_back(field); |
+ autofill_unittest::CreateTestFormField( |
+ "Email:", "email", "theprez@gmail.com", "text", &field); |
+ form.fields.push_back(field); |
FormStructure form_structure(form); |
std::vector<FormStructure*> forms; |
forms.push_back(&form_structure); |
personal_data_->ImportFormData(forms, NULL); |
- personal_data_->SaveImportedFormData(); |
// And wait for the refresh. |
EXPECT_CALL(personal_data_observer_, |
@@ -361,9 +369,12 @@ TEST_F(PersonalDataManagerTest, ImportFormData) { |
MessageLoop::current()->Run(); |
AutoFillProfile expected(ASCIIToUTF16("Unlabeled"), 1); |
+ autofill_unittest::SetProfileInfo(&expected, "Unlabeled", "George", NULL, |
+ "Washington", "theprez@gmail.com", NULL, NULL, NULL, NULL, NULL, NULL, |
+ NULL, NULL, NULL); |
const std::vector<AutoFillProfile*>& results = personal_data_->profiles(); |
ASSERT_EQ(1U, results.size()); |
- ASSERT_EQ(expected, *results[0]); |
+ EXPECT_EQ(expected, *results[0]); |
} |
TEST_F(PersonalDataManagerTest, SetUniqueProfileLabels) { |
@@ -443,3 +454,124 @@ TEST_F(PersonalDataManagerTest, SetUniqueCreditCardLabels) { |
EXPECT_EQ(ASCIIToUTF16("Work"), results[4]->Label()); |
EXPECT_EQ(ASCIIToUTF16("Work2"), results[5]->Label()); |
} |
+ |
+TEST_F(PersonalDataManagerTest, AggregateProfileData) { |
+ scoped_ptr<FormData> form(new FormData); |
+ |
+ webkit_glue::FormField field; |
+ autofill_unittest::CreateTestFormField( |
+ "First name:", "first_name", "George", "text", &field); |
+ form->fields.push_back(field); |
+ autofill_unittest::CreateTestFormField( |
+ "Last name:", "last_name", "Washington", "text", &field); |
+ form->fields.push_back(field); |
+ autofill_unittest::CreateTestFormField( |
+ "Email:", "email", "theprez@gmail.com", "text", &field); |
+ form->fields.push_back(field); |
+ |
+ scoped_ptr<FormStructure> form_structure(new FormStructure(*form)); |
+ scoped_ptr<std::vector<FormStructure*> > forms( |
+ new std::vector<FormStructure*>); |
+ forms->push_back(form_structure.get()); |
+ personal_data_->ImportFormData(*forms, NULL); |
+ |
+ // And wait for the refresh. |
+ EXPECT_CALL(personal_data_observer_, |
+ OnPersonalDataLoaded()).WillOnce(QuitUIMessageLoop()); |
+ |
+ MessageLoop::current()->Run(); |
+ |
+ scoped_ptr<AutoFillProfile> expected( |
+ new AutoFillProfile(ASCIIToUTF16("Unlabeled"), 1)); |
+ autofill_unittest::SetProfileInfo(expected.get(), "Unlabeled", "George", NULL, |
+ "Washington", "theprez@gmail.com", NULL, NULL, NULL, NULL, NULL, NULL, |
+ NULL, NULL, NULL); |
+ const std::vector<AutoFillProfile*>& results = personal_data_->profiles(); |
+ ASSERT_EQ(1U, results.size()); |
+ EXPECT_EQ(*expected, *results[0]); |
+ |
+ // Now create a completely different profile. |
+ form.reset(new FormData); |
+ autofill_unittest::CreateTestFormField( |
+ "First name:", "first_name", "John", "text", &field); |
+ form->fields.push_back(field); |
+ autofill_unittest::CreateTestFormField( |
+ "Last name:", "last_name", "Adams", "text", &field); |
+ form->fields.push_back(field); |
+ autofill_unittest::CreateTestFormField( |
+ "Email:", "email", "second@gmail.com", "text", &field); |
+ form->fields.push_back(field); |
+ |
+ form_structure.reset(new FormStructure(*form)); |
+ forms.reset(new std::vector<FormStructure*>); |
+ forms->push_back(form_structure.get()); |
+ personal_data_->ImportFormData(*forms, NULL); |
+ |
+ // And wait for the refresh. |
+ EXPECT_CALL(personal_data_observer_, |
+ OnPersonalDataLoaded()).WillOnce(QuitUIMessageLoop()); |
+ |
+ MessageLoop::current()->Run(); |
+ |
+ const std::vector<AutoFillProfile*>& results2 = personal_data_->profiles(); |
+ ASSERT_EQ(2U, results2.size()); |
+ |
+ expected.reset(new AutoFillProfile(ASCIIToUTF16("Unlabeled"), 1)); |
+ autofill_unittest::SetProfileInfo(expected.get(), "Unlabeled", "George", NULL, |
+ "Washington", "theprez@gmail.com", NULL, NULL, NULL, NULL, NULL, NULL, |
+ NULL, NULL, NULL); |
+ EXPECT_EQ(*expected, *results2[0]); |
+ |
+ expected.reset(new AutoFillProfile(ASCIIToUTF16("Unlabeled2"), 2)); |
+ autofill_unittest::SetProfileInfo(expected.get(), "Unlabeled2", "John", NULL, |
+ "Adams", "second@gmail.com", NULL, NULL, NULL, NULL, NULL, NULL, NULL, |
+ NULL, NULL); |
+ EXPECT_EQ(*expected, *results2[1]); |
+ |
+ // Submit a form with new data for the first profile. |
+ form.reset(new FormData); |
+ autofill_unittest::CreateTestFormField( |
+ "First name:", "first_name", "George", "text", &field); |
+ form->fields.push_back(field); |
+ autofill_unittest::CreateTestFormField( |
+ "Last name:", "last_name", "Washington", "text", &field); |
+ form->fields.push_back(field); |
+ autofill_unittest::CreateTestFormField( |
+ "Address Line 1:", "address", "190 High Street", "text", &field); |
+ form->fields.push_back(field); |
+ autofill_unittest::CreateTestFormField( |
+ "City:", "city", "Philadelphia", "text", &field); |
+ form->fields.push_back(field); |
+ autofill_unittest::CreateTestFormField( |
+ "State:", "state", "Pennsylvania", "text", &field); |
+ form->fields.push_back(field); |
+ autofill_unittest::CreateTestFormField( |
+ "Zip:", "zipcode", "19106", "text", &field); |
+ form->fields.push_back(field); |
+ |
+ form_structure.reset(new FormStructure(*form)); |
+ forms.reset(new std::vector<FormStructure*>); |
+ forms->push_back(form_structure.get()); |
+ personal_data_->ImportFormData(*forms, NULL); |
+ |
+ // And wait for the refresh. |
+ EXPECT_CALL(personal_data_observer_, |
+ OnPersonalDataLoaded()).WillOnce(QuitUIMessageLoop()); |
+ |
+ MessageLoop::current()->Run(); |
+ |
+ const std::vector<AutoFillProfile*>& results3 = personal_data_->profiles(); |
+ ASSERT_EQ(2U, results3.size()); |
+ |
+ expected.reset(new AutoFillProfile(ASCIIToUTF16("Unlabeled"), 1)); |
+ autofill_unittest::SetProfileInfo(expected.get(), "Unlabeled", "George", NULL, |
+ "Washington", "theprez@gmail.com", NULL, "190 High Street", NULL, |
+ "Philadelphia", "Pennsylvania", "19106", NULL, NULL, NULL); |
+ EXPECT_EQ(*expected, *results3[0]); |
+ |
+ expected.reset(new AutoFillProfile(ASCIIToUTF16("Unlabeled2"), 2)); |
+ autofill_unittest::SetProfileInfo(expected.get(), "Unlabeled2", "John", NULL, |
+ "Adams", "second@gmail.com", NULL, NULL, NULL, NULL, NULL, NULL, NULL, |
+ NULL, NULL); |
+ EXPECT_EQ(*expected, *results3[1]); |
+} |