Autofill: correctly save phone numbers split across multiple fields

BUG=63735
TEST=unit_tests --gtest_filter=PersonalDataManagerTest.*

Review URL: http://codereview.chromium.org/5219004

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@67069 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/autofill/personal_data_manager_unittest.cc b/chrome/browser/autofill/personal_data_manager_unittest.cc
index 7c2fc5f..97c1403 100644
--- a/chrome/browser/autofill/personal_data_manager_unittest.cc
+++ b/chrome/browser/autofill/personal_data_manager_unittest.cc
@@ -543,6 +543,46 @@
   EXPECT_EQ(0, expected.Compare(*results[0]));
 }
 
+TEST_F(PersonalDataManagerTest, ImportPhoneNumberSplitAcrossMultipleFields) {
+  FormData form;
+  webkit_glue::FormField field;
+  autofill_test::CreateTestFormField(
+      "First name:", "first_name", "George", "text", &field);
+  form.fields.push_back(field);
+  autofill_test::CreateTestFormField(
+      "Last name:", "last_name", "Washington", "text", &field);
+  form.fields.push_back(field);
+  autofill_test::CreateTestFormField(
+      "Phone #:", "home_phone_area_code", "650", "text", &field);
+  field.set_max_length(3);
+  form.fields.push_back(field);
+  autofill_test::CreateTestFormField(
+      "Phone #:", "home_phone_prefix", "555", "text", &field);
+  field.set_max_length(3);
+  form.fields.push_back(field);
+  autofill_test::CreateTestFormField(
+      "Phone #:", "home_phone_suffix", "0000", "text", &field);
+  field.set_max_length(4);
+  form.fields.push_back(field);
+  FormStructure form_structure(form);
+  std::vector<FormStructure*> forms;
+  forms.push_back(&form_structure);
+  personal_data_->ImportFormData(forms);
+
+  // Wait for the refresh.
+  EXPECT_CALL(personal_data_observer_,
+      OnPersonalDataLoaded()).WillOnce(QuitUIMessageLoop());
+
+  MessageLoop::current()->Run();
+
+  AutoFillProfile expected;
+  autofill_test::SetProfileInfo(&expected, NULL, "George", NULL, "Washington",
+      NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, "6505550000", NULL);
+  const std::vector<AutoFillProfile*>& results = personal_data_->profiles();
+  ASSERT_EQ(1U, results.size());
+  EXPECT_EQ(0, expected.Compare(*results[0]));
+}
+
 TEST_F(PersonalDataManagerTest, SetUniqueCreditCardLabels) {
   CreditCard credit_card0;
   credit_card0.set_label(ASCIIToUTF16("Home"));