| 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]);
 | 
| +}
 | 
| 
 |