From c8ccbfcbdaa3b2c62ca4ca63dae2db344345ab9d Mon Sep 17 00:00:00 2001
From: "jhawkins@chromium.org"
 <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Fri, 23 Apr 2010 20:55:36 +0000
Subject: AutoFill: Try to parse a third address line and discard it if it
 exists.

BUG=38327
TEST=FormManagerTest.ThreeAddressLines

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@45479 0039d316-1c4b-4281-b951-d872f2087c98
---
 chrome/browser/autofill/form_structure_unittest.cc | 51 ++++++++++++++++++++++
 1 file changed, 51 insertions(+)

(limited to 'chrome/browser/autofill/form_structure_unittest.cc')

diff --git a/chrome/browser/autofill/form_structure_unittest.cc b/chrome/browser/autofill/form_structure_unittest.cc
index 8230364..52f440d 100644
--- a/chrome/browser/autofill/form_structure_unittest.cc
+++ b/chrome/browser/autofill/form_structure_unittest.cc
@@ -667,4 +667,55 @@ TEST(FormStructureTest, HeuristicsCreditCardInfoWithUnknownCardField) {
   EXPECT_EQ(UNKNOWN_TYPE, form_structure->field(6)->heuristic_type());
 }
 
+TEST(FormStructureTest, ThreeAddressLines) {
+  scoped_ptr<FormStructure> form_structure;
+  FormData form;
+
+  form.method = ASCIIToUTF16("post");
+  form.fields.push_back(
+      webkit_glue::FormField(ASCIIToUTF16("Address Line1"),
+                             ASCIIToUTF16("Address"),
+                             string16(),
+                             ASCIIToUTF16("text")));
+  form.fields.push_back(
+      webkit_glue::FormField(ASCIIToUTF16("Address Line2"),
+                             ASCIIToUTF16("Address"),
+                             string16(),
+                             ASCIIToUTF16("text")));
+  form.fields.push_back(
+      webkit_glue::FormField(ASCIIToUTF16("Address Line3"),
+                             ASCIIToUTF16("Address"),
+                             string16(),
+                             ASCIIToUTF16("text")));
+  form_structure.reset(new FormStructure(form));
+  EXPECT_TRUE(form_structure->IsAutoFillable());
+
+  // Check that heuristics are initialized as UNKNOWN_TYPE.
+  std::vector<AutoFillField*>::const_iterator iter;
+  size_t i;
+  for (iter = form_structure->begin(), i = 0;
+       iter != form_structure->end();
+       ++iter, ++i) {
+    // Expect last element to be NULL.
+    if (i == form_structure->field_count()) {
+      ASSERT_EQ(static_cast<AutoFillField*>(NULL), *iter);
+    } else {
+      ASSERT_NE(static_cast<AutoFillField*>(NULL), *iter);
+      EXPECT_EQ(UNKNOWN_TYPE, (*iter)->heuristic_type());
+    }
+  }
+
+  // Compute heuristic types.
+  form_structure->GetHeuristicAutoFillTypes();
+  ASSERT_EQ(3U, form_structure->field_count());
+
+  // Check that heuristics are no longer UNKNOWN_TYPE.
+  // Address Line 1.
+  EXPECT_EQ(ADDRESS_HOME_LINE1, form_structure->field(0)->heuristic_type());
+  // Address Line 2.
+  EXPECT_EQ(ADDRESS_HOME_LINE2, form_structure->field(1)->heuristic_type());
+  // Address Line 3.
+  EXPECT_EQ(UNKNOWN_TYPE, form_structure->field(2)->heuristic_type());
+}
+
 }  // namespace
-- 
cgit v1.1