| Index: components/autofill/core/browser/form_structure_unittest.cc | 
| diff --git a/components/autofill/core/browser/form_structure_unittest.cc b/components/autofill/core/browser/form_structure_unittest.cc | 
| index 7d38165b4d1c440a03098cc5254ce6177963b41f..a66183ba78f635009dcb9b0a92f9c1c484316ba5 100644 | 
| --- a/components/autofill/core/browser/form_structure_unittest.cc | 
| +++ b/components/autofill/core/browser/form_structure_unittest.cc | 
| @@ -7,7 +7,6 @@ | 
| #include "base/memory/scoped_ptr.h" | 
| #include "base/strings/string_util.h" | 
| #include "base/strings/utf_string_conversions.h" | 
| -#include "components/autofill/content/browser/autocheckout_page_meta_data.h" | 
| #include "components/autofill/core/browser/autofill_metrics.h" | 
| #include "components/autofill/core/common/form_data.h" | 
| #include "components/autofill/core/common/form_field_data.h" | 
| @@ -92,11 +91,7 @@ TEST(FormStructureTest, FieldCount) { | 
|  | 
| // The render process sends all fields to browser including fields with | 
| // autocomplete=off | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| -  EXPECT_EQ(4U, form_structure->field_count()); | 
| - | 
| -  // We expect the same count when autocheckout is enabled. | 
| -  form_structure.reset(new FormStructure(form, "http://fake_url")); | 
| +  form_structure.reset(new FormStructure(form)); | 
| EXPECT_EQ(4U, form_structure->field_count()); | 
| } | 
|  | 
| @@ -127,7 +122,7 @@ TEST(FormStructureTest, AutofillCount) { | 
| form.fields.push_back(field); | 
|  | 
| // Only text and select fields that are heuristically matched are counted. | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
| form_structure->DetermineHeuristicTypes(TestAutofillMetrics()); | 
| EXPECT_EQ(1U, form_structure->autofill_count()); | 
|  | 
| @@ -138,25 +133,20 @@ TEST(FormStructureTest, AutofillCount) { | 
| field.should_autocomplete = false; | 
| form.fields.push_back(field); | 
|  | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
| form_structure->DetermineHeuristicTypes(TestAutofillMetrics()); | 
| // DetermineHeuristicTypes also assign field type for fields with | 
| // autocomplete=off thus autofill_count includes them. This is a bug, | 
| // and they should not be counted. See http://crbug.com/176432 for details. | 
| // TODO(benquan): change it to EXPECT_EQ(1U, ... when the bug is fixed. | 
| EXPECT_EQ(2U, form_structure->autofill_count()); | 
| - | 
| -  // All fields should be counted when Autocheckout is enabled. | 
| -  form_structure.reset(new FormStructure(form, "http://fake_url")); | 
| -  form_structure->DetermineHeuristicTypes(TestAutofillMetrics()); | 
| -  EXPECT_EQ(2U, form_structure->autofill_count()); | 
| } | 
|  | 
| TEST(FormStructureTest, SourceURL) { | 
| FormData form; | 
| form.origin = GURL("http://www.foo.com/"); | 
| form.method = ASCIIToUTF16("post"); | 
| -  FormStructure form_structure(form, std::string()); | 
| +  FormStructure form_structure(form); | 
|  | 
| EXPECT_EQ(form.origin, form_structure.source_url()); | 
| } | 
| @@ -169,11 +159,6 @@ TEST(FormStructureTest, IsAutofillable) { | 
| form.method = ASCIIToUTF16("post"); | 
|  | 
| FormFieldData field; | 
| -  // When autocheckout is enabled, we enable autofill even the form has | 
| -  // no fields | 
| -  form_structure.reset(new FormStructure(form, "http://fake_url")); | 
| -  form_structure->DetermineHeuristicTypes(TestAutofillMetrics()); | 
| -  EXPECT_TRUE(form_structure->IsAutofillable(true)); | 
|  | 
| field.label = ASCIIToUTF16("username"); | 
| field.name = ASCIIToUTF16("username"); | 
| @@ -190,15 +175,10 @@ TEST(FormStructureTest, IsAutofillable) { | 
| field.form_control_type = "submit"; | 
| form.fields.push_back(field); | 
|  | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
| form_structure->DetermineHeuristicTypes(TestAutofillMetrics()); | 
| EXPECT_FALSE(form_structure->IsAutofillable(true)); | 
|  | 
| -  // We do not limit to three text fields when autocheckout is enabled. | 
| -  form_structure.reset(new FormStructure(form, "http://fake_url")); | 
| -  form_structure->DetermineHeuristicTypes(TestAutofillMetrics()); | 
| -  EXPECT_TRUE(form_structure->IsAutofillable(true)); | 
| - | 
| // We now have three text fields, but only two auto-fillable fields. | 
| field.label = ASCIIToUTF16("First Name"); | 
| field.name = ASCIIToUTF16("firstname"); | 
| @@ -210,7 +190,7 @@ TEST(FormStructureTest, IsAutofillable) { | 
| field.form_control_type = "text"; | 
| form.fields.push_back(field); | 
|  | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
| form_structure->DetermineHeuristicTypes(TestAutofillMetrics()); | 
| EXPECT_FALSE(form_structure->IsAutofillable(true)); | 
|  | 
| @@ -220,14 +200,14 @@ TEST(FormStructureTest, IsAutofillable) { | 
| field.form_control_type = "email"; | 
| form.fields.push_back(field); | 
|  | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
| form_structure->DetermineHeuristicTypes(TestAutofillMetrics()); | 
| EXPECT_TRUE(form_structure->IsAutofillable(true)); | 
|  | 
| // The method must be 'post', though we can intentionally ignore this | 
| // criterion for the sake of providing a helpful warning message to the user. | 
| form.method = ASCIIToUTF16("get"); | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
| form_structure->DetermineHeuristicTypes(TestAutofillMetrics()); | 
| EXPECT_FALSE(form_structure->IsAutofillable(true)); | 
| EXPECT_TRUE(form_structure->IsAutofillable(false)); | 
| @@ -235,13 +215,13 @@ TEST(FormStructureTest, IsAutofillable) { | 
| // The target cannot include http(s)://*/search... | 
| form.method = ASCIIToUTF16("post"); | 
| form.action = GURL("http://google.com/search?q=hello"); | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
| form_structure->DetermineHeuristicTypes(TestAutofillMetrics()); | 
| EXPECT_FALSE(form_structure->IsAutofillable(true)); | 
|  | 
| // But search can be in the URL. | 
| form.action = GURL("http://search.com/?q=hello"); | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
| form_structure->DetermineHeuristicTypes(TestAutofillMetrics()); | 
| EXPECT_TRUE(form_structure->IsAutofillable(true)); | 
| } | 
| @@ -270,14 +250,9 @@ TEST(FormStructureTest, ShouldBeParsed) { | 
| form.fields.push_back(checkable_field); | 
|  | 
| // We have only one text field, should not be parsed. | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
| EXPECT_FALSE(form_structure->ShouldBeParsed(true)); | 
|  | 
| -  // The form should be parsed for autocheckout even it has less than three | 
| -  // text fields. | 
| -  form_structure.reset(new FormStructure(form, "http://fake_url")); | 
| -  EXPECT_TRUE(form_structure->ShouldBeParsed(true)); | 
| - | 
| // We now have three text fields, though only two are auto-fillable. | 
| field.label = ASCIIToUTF16("First Name"); | 
| field.name = ASCIIToUTF16("firstname"); | 
| @@ -289,25 +264,25 @@ TEST(FormStructureTest, ShouldBeParsed) { | 
| field.form_control_type = "text"; | 
| form.fields.push_back(field); | 
|  | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
| EXPECT_TRUE(form_structure->ShouldBeParsed(true)); | 
|  | 
| // The method must be 'post', though we can intentionally ignore this | 
| // criterion for the sake of providing a helpful warning message to the user. | 
| form.method = ASCIIToUTF16("get"); | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
| EXPECT_FALSE(form_structure->IsAutofillable(true)); | 
| EXPECT_TRUE(form_structure->ShouldBeParsed(false)); | 
|  | 
| // The target cannot include http(s)://*/search... | 
| form.method = ASCIIToUTF16("post"); | 
| form.action = GURL("http://google.com/search?q=hello"); | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
| EXPECT_FALSE(form_structure->ShouldBeParsed(true)); | 
|  | 
| // But search can be in the URL. | 
| form.action = GURL("http://search.com/?q=hello"); | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
| EXPECT_TRUE(form_structure->ShouldBeParsed(true)); | 
|  | 
| // The form need only have three fields, but at least one must be a text | 
| @@ -329,17 +304,13 @@ TEST(FormStructureTest, ShouldBeParsed) { | 
| field.form_control_type = "select-one"; | 
| form.fields.push_back(field); | 
|  | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
| EXPECT_TRUE(form_structure->ShouldBeParsed(true)); | 
|  | 
| form.fields[0].form_control_type = "select-one"; | 
| // Now, no text fields. | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
| EXPECT_FALSE(form_structure->ShouldBeParsed(true)); | 
| - | 
| -  // It should be parsed when autocheckout is enabled. | 
| -  form_structure.reset(new FormStructure(form, "http://fake_url")); | 
| -  EXPECT_TRUE(form_structure->ShouldBeParsed(true)); | 
| } | 
|  | 
| TEST(FormStructureTest, HeuristicsContactInfo) { | 
| @@ -383,7 +354,7 @@ TEST(FormStructureTest, HeuristicsContactInfo) { | 
| field.form_control_type = "submit"; | 
| form.fields.push_back(field); | 
|  | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
| form_structure->DetermineHeuristicTypes(TestAutofillMetrics()); | 
| EXPECT_TRUE(form_structure->IsAutofillable(true)); | 
|  | 
| @@ -434,7 +405,7 @@ TEST(FormStructureTest, HeuristicsAutocompleteAttribute) { | 
| field.autocomplete_attribute = "email"; | 
| form.fields.push_back(field); | 
|  | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
| form_structure->DetermineHeuristicTypes(TestAutofillMetrics()); | 
| EXPECT_TRUE(form_structure->IsAutofillable(true)); | 
|  | 
| @@ -475,7 +446,7 @@ TEST(FormStructureTest, HeuristicsAutocompleteAttributePhoneTypes) { | 
| field.autocomplete_attribute = "tel-local-suffix"; | 
| form.fields.push_back(field); | 
|  | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
| form_structure->DetermineHeuristicTypes(TestAutofillMetrics()); | 
| EXPECT_TRUE(form_structure->IsAutofillable(true)); | 
|  | 
| @@ -516,7 +487,7 @@ TEST(FormStructureTest, AutocompleteAttributeOverridesOtherHeuristics) { | 
| field.name = ASCIIToUTF16("email"); | 
| form.fields.push_back(field); | 
|  | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
| form_structure->DetermineHeuristicTypes(TestAutofillMetrics()); | 
| EXPECT_TRUE(form_structure->IsAutofillable(true)); | 
| EXPECT_TRUE(form_structure->ShouldBeCrowdsourced()); | 
| @@ -530,7 +501,7 @@ TEST(FormStructureTest, AutocompleteAttributeOverridesOtherHeuristics) { | 
|  | 
| // Now update the first form field to include an 'autocomplete' attribute. | 
| form.fields.front().autocomplete_attribute = "x-other"; | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
| form_structure->DetermineHeuristicTypes(TestAutofillMetrics()); | 
| EXPECT_FALSE(form_structure->IsAutofillable(true)); | 
| EXPECT_FALSE(form_structure->ShouldBeCrowdsourced()); | 
| @@ -541,20 +512,6 @@ TEST(FormStructureTest, AutocompleteAttributeOverridesOtherHeuristics) { | 
| EXPECT_EQ(UNKNOWN_TYPE, form_structure->field(0)->heuristic_type()); | 
| EXPECT_EQ(UNKNOWN_TYPE, form_structure->field(1)->heuristic_type()); | 
| EXPECT_EQ(UNKNOWN_TYPE, form_structure->field(2)->heuristic_type()); | 
| - | 
| -  // When Autocheckout is enabled, we should ignore 'autocomplete' attribute | 
| -  // when deciding to crowdsource. | 
| -  form_structure.reset(new FormStructure(form, "http://fake.url")); | 
| -  form_structure->DetermineHeuristicTypes(TestAutofillMetrics()); | 
| -  EXPECT_TRUE(form_structure->IsAutofillable(true)); | 
| -  EXPECT_TRUE(form_structure->ShouldBeCrowdsourced()); | 
| - | 
| -  ASSERT_EQ(3U, form_structure->field_count()); | 
| -  ASSERT_EQ(0U, form_structure->autofill_count()); | 
| - | 
| -  EXPECT_EQ(UNKNOWN_TYPE, form_structure->field(0)->heuristic_type()); | 
| -  EXPECT_EQ(UNKNOWN_TYPE, form_structure->field(1)->heuristic_type()); | 
| -  EXPECT_EQ(UNKNOWN_TYPE, form_structure->field(2)->heuristic_type()); | 
| } | 
|  | 
| // Verify that we can correctly process sections listed in the |autocomplete| | 
| @@ -604,7 +561,7 @@ TEST(FormStructureTest, HeuristicsAutocompleteAttributeWithSections) { | 
| field.autocomplete_attribute = "section-foo cc-number"; | 
| form.fields.push_back(field); | 
|  | 
| -  FormStructure form_structure(form, std::string()); | 
| +  FormStructure form_structure(form); | 
| form_structure.DetermineHeuristicTypes(TestAutofillMetrics()); | 
| EXPECT_TRUE(form_structure.IsAutofillable(true)); | 
|  | 
| @@ -649,7 +606,7 @@ TEST(FormStructureTest, HeuristicsAutocompleteAttributeWithSectionsDegenerate) { | 
| field.autocomplete_attribute = "garbage billing email"; | 
| form.fields.push_back(field); | 
|  | 
| -  FormStructure form_structure(form, std::string()); | 
| +  FormStructure form_structure(form); | 
| form_structure.DetermineHeuristicTypes(TestAutofillMetrics()); | 
|  | 
| // Expect the correct number of fields. | 
| @@ -679,7 +636,7 @@ TEST(FormStructureTest, HeuristicsAutocompleteAttributeWithSectionsRepeated) { | 
| field.autocomplete_attribute = "section-foo address-line1"; | 
| form.fields.push_back(field); | 
|  | 
| -  FormStructure form_structure(form, std::string()); | 
| +  FormStructure form_structure(form); | 
| form_structure.DetermineHeuristicTypes(TestAutofillMetrics()); | 
|  | 
| // Expect the correct number of fields. | 
| @@ -717,7 +674,7 @@ TEST(FormStructureTest, HeuristicsDontOverrideAutocompleteAttributeSections) { | 
| field.autocomplete_attribute = "address-line1"; | 
| form.fields.push_back(field); | 
|  | 
| -  FormStructure form_structure(form, std::string()); | 
| +  FormStructure form_structure(form); | 
| form_structure.DetermineHeuristicTypes(TestAutofillMetrics()); | 
|  | 
| // Expect the correct number of fields. | 
| @@ -782,7 +739,7 @@ TEST(FormStructureTest, HeuristicsSample8) { | 
| field.form_control_type = "submit"; | 
| form.fields.push_back(field); | 
|  | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
| form_structure->DetermineHeuristicTypes(TestAutofillMetrics()); | 
| EXPECT_TRUE(form_structure->IsAutofillable(true)); | 
| ASSERT_EQ(10U, form_structure->field_count()); | 
| @@ -850,7 +807,7 @@ TEST(FormStructureTest, HeuristicsSample6) { | 
| field.form_control_type = "submit"; | 
| form.fields.push_back(field); | 
|  | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
| form_structure->DetermineHeuristicTypes(TestAutofillMetrics()); | 
| EXPECT_TRUE(form_structure->IsAutofillable(true)); | 
| ASSERT_EQ(7U, form_structure->field_count()); | 
| @@ -916,7 +873,7 @@ TEST(FormStructureTest, HeuristicsLabelsOnly) { | 
| field.form_control_type = "submit"; | 
| form.fields.push_back(field); | 
|  | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
| form_structure->DetermineHeuristicTypes(TestAutofillMetrics()); | 
| EXPECT_TRUE(form_structure->IsAutofillable(true)); | 
| ASSERT_EQ(8U, form_structure->field_count()); | 
| @@ -974,7 +931,7 @@ TEST(FormStructureTest, HeuristicsCreditCardInfo) { | 
| field.form_control_type = "submit"; | 
| form.fields.push_back(field); | 
|  | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
| form_structure->DetermineHeuristicTypes(TestAutofillMetrics()); | 
| EXPECT_TRUE(form_structure->IsAutofillable(true)); | 
| ASSERT_EQ(6U, form_structure->field_count()); | 
| @@ -1035,7 +992,7 @@ TEST(FormStructureTest, HeuristicsCreditCardInfoWithUnknownCardField) { | 
| field.form_control_type = "submit"; | 
| form.fields.push_back(field); | 
|  | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
| form_structure->DetermineHeuristicTypes(TestAutofillMetrics()); | 
| EXPECT_TRUE(form_structure->IsAutofillable(true)); | 
| ASSERT_EQ(7U, form_structure->field_count()); | 
| @@ -1083,7 +1040,7 @@ TEST(FormStructureTest, ThreeAddressLines) { | 
| field.name = ASCIIToUTF16("city"); | 
| form.fields.push_back(field); | 
|  | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
| form_structure->DetermineHeuristicTypes(TestAutofillMetrics()); | 
| EXPECT_TRUE(form_structure->IsAutofillable(true)); | 
| ASSERT_EQ(4U, form_structure->field_count()); | 
| @@ -1125,7 +1082,7 @@ TEST(FormStructureTest, BillingAndShippingAddresses) { | 
| field.name = ASCIIToUTF16("billing.address.addressLine2"); | 
| form.fields.push_back(field); | 
|  | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
| form_structure->DetermineHeuristicTypes(TestAutofillMetrics()); | 
| EXPECT_TRUE(form_structure->IsAutofillable(true)); | 
| ASSERT_EQ(4U, form_structure->field_count()); | 
| @@ -1166,7 +1123,7 @@ TEST(FormStructureTest, SurplusAddressLinesIgnored) { | 
| field.name = ASCIIToUTF16("billing.address.addressLine4"); | 
| form.fields.push_back(field); | 
|  | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
| form_structure->DetermineHeuristicTypes(TestAutofillMetrics()); | 
| ASSERT_EQ(4U, form_structure->field_count()); | 
| ASSERT_EQ(2U, form_structure->autofill_count()); | 
| @@ -1210,7 +1167,7 @@ TEST(FormStructureTest, ThreeAddressLinesExpedia) { | 
| field.name = ASCIIToUTF16("FOPIH_RgWebCC_0_IHAddress_adct"); | 
| form.fields.push_back(field); | 
|  | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
| form_structure->DetermineHeuristicTypes(TestAutofillMetrics()); | 
| EXPECT_TRUE(form_structure->IsAutofillable(true)); | 
| ASSERT_EQ(4U, form_structure->field_count()); | 
| @@ -1249,7 +1206,7 @@ TEST(FormStructureTest, TwoAddressLinesEbay) { | 
| field.name = ASCIIToUTF16("city"); | 
| form.fields.push_back(field); | 
|  | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
| form_structure->DetermineHeuristicTypes(TestAutofillMetrics()); | 
| EXPECT_TRUE(form_structure->IsAutofillable(true)); | 
| ASSERT_EQ(3U, form_structure->field_count()); | 
| @@ -1283,7 +1240,7 @@ TEST(FormStructureTest, HeuristicsStateWithProvince) { | 
| field.name = ASCIIToUTF16("State"); | 
| form.fields.push_back(field); | 
|  | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
| form_structure->DetermineHeuristicTypes(TestAutofillMetrics()); | 
| EXPECT_TRUE(form_structure->IsAutofillable(true)); | 
| ASSERT_EQ(3U, form_structure->field_count()); | 
| @@ -1350,7 +1307,7 @@ TEST(FormStructureTest, HeuristicsWithBilling) { | 
| field.name = ASCIIToUTF16("email$emailBox"); | 
| form.fields.push_back(field); | 
|  | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
| form_structure->DetermineHeuristicTypes(TestAutofillMetrics()); | 
| EXPECT_TRUE(form_structure->IsAutofillable(true)); | 
| ASSERT_EQ(11U, form_structure->field_count()); | 
| @@ -1401,7 +1358,7 @@ TEST(FormStructureTest, ThreePartPhoneNumber) { | 
| field.max_length = 0; | 
| form.fields.push_back(field); | 
|  | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
| form_structure->DetermineHeuristicTypes(TestAutofillMetrics()); | 
| EXPECT_TRUE(form_structure->IsAutofillable(true)); | 
| ASSERT_EQ(4U, form_structure->field_count()); | 
| @@ -1447,7 +1404,7 @@ TEST(FormStructureTest, HeuristicsInfernoCC) { | 
| field.name = ASCIIToUTF16("expiration_year"); | 
| form.fields.push_back(field); | 
|  | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
| form_structure->DetermineHeuristicTypes(TestAutofillMetrics()); | 
| EXPECT_TRUE(form_structure->IsAutofillable(true)); | 
|  | 
| @@ -1500,7 +1457,7 @@ TEST(FormStructureTest, CVCCodeClash) { | 
| field.name = ASCIIToUTF16("csc"); | 
| form.fields.push_back(field); | 
|  | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
| form_structure->DetermineHeuristicTypes(TestAutofillMetrics()); | 
| EXPECT_TRUE(form_structure->IsAutofillable(true)); | 
|  | 
| @@ -1559,7 +1516,7 @@ TEST(FormStructureTest, EncodeQueryRequest) { | 
| form.fields.push_back(checkable_field); | 
|  | 
| ScopedVector<FormStructure> forms; | 
| -  forms.push_back(new FormStructure(form, std::string())); | 
| +  forms.push_back(new FormStructure(form)); | 
| std::vector<std::string> encoded_signatures; | 
| std::string encoded_xml; | 
| const char * const kSignature1 = "11337937696949187602"; | 
| @@ -1579,7 +1536,7 @@ TEST(FormStructureTest, EncodeQueryRequest) { | 
|  | 
| // Add the same form, only one will be encoded, so EncodeQueryRequest() should | 
| // return the same data. | 
| -  forms.push_back(new FormStructure(form, std::string())); | 
| +  forms.push_back(new FormStructure(form)); | 
| ASSERT_TRUE(FormStructure::EncodeQueryRequest(forms.get(), | 
| &encoded_signatures, | 
| &encoded_xml)); | 
| @@ -1593,7 +1550,7 @@ TEST(FormStructureTest, EncodeQueryRequest) { | 
| form.fields.push_back(field); | 
| } | 
|  | 
| -  forms.push_back(new FormStructure(form, std::string())); | 
| +  forms.push_back(new FormStructure(form)); | 
| ASSERT_TRUE(FormStructure::EncodeQueryRequest(forms.get(), | 
| &encoded_signatures, | 
| &encoded_xml)); | 
| @@ -1624,7 +1581,7 @@ TEST(FormStructureTest, EncodeQueryRequest) { | 
| malformed_form.fields.push_back(field); | 
| } | 
|  | 
| -  forms.push_back(new FormStructure(malformed_form, std::string())); | 
| +  forms.push_back(new FormStructure(malformed_form)); | 
| ASSERT_TRUE(FormStructure::EncodeQueryRequest(forms.get(), | 
| &encoded_signatures, | 
| &encoded_xml)); | 
| @@ -1635,37 +1592,12 @@ TEST(FormStructureTest, EncodeQueryRequest) { | 
|  | 
| // Check that we fail if there are only bad form(s). | 
| ScopedVector<FormStructure> bad_forms; | 
| -  bad_forms.push_back(new FormStructure(malformed_form, std::string())); | 
| +  bad_forms.push_back(new FormStructure(malformed_form)); | 
| EXPECT_FALSE(FormStructure::EncodeQueryRequest(bad_forms.get(), | 
| &encoded_signatures, | 
| &encoded_xml)); | 
| EXPECT_EQ(0U, encoded_signatures.size()); | 
| EXPECT_EQ("", encoded_xml); | 
| - | 
| -  // Check the behaviour with autocheckout enabled. | 
| -  ScopedVector<FormStructure> checkable_forms; | 
| -  checkable_forms.push_back( | 
| -      new FormStructure(form, "https://www.sample1.com/query/path")); | 
| - | 
| -  ASSERT_TRUE(FormStructure::EncodeQueryRequest(checkable_forms.get(), | 
| -                                                &encoded_signatures, | 
| -                                                &encoded_xml)); | 
| -  const char * const kSignature3 = "7747357776717901584"; | 
| -  const char * const kResponse3 = | 
| -      "<?xml version=\"1.0\" encoding=\"UTF-8\"?><autofillquery " | 
| -      "clientversion=\"6.1.1715.1442/en (GGLL)\" accepts=\"a,e\" " | 
| -      "urlprefixsignature=\"7648393911063090788\">" | 
| -      "<form signature=\"7747357776717901584\">" | 
| -      "<field signature=\"412125936\"/>" | 
| -      "<field signature=\"1917667676\"/><field signature=\"2226358947\"/><field" | 
| -      " signature=\"747221617\"/><field signature=\"4108155786\"/><field " | 
| -      "signature=\"3410250678\"/><field signature=\"509334676\"/><field " | 
| -      "signature=\"509334676\"/><field signature=\"509334676\"/><field " | 
| -      "signature=\"509334676\"/><field signature=\"509334676\"/></form>" | 
| -      "</autofillquery>"; | 
| -  ASSERT_EQ(1U, encoded_signatures.size()); | 
| -  EXPECT_EQ(kSignature3, encoded_signatures[0]); | 
| -  EXPECT_EQ(kResponse3, encoded_xml); | 
| } | 
|  | 
| TEST(FormStructureTest, EncodeUploadRequest) { | 
| @@ -1673,7 +1605,7 @@ TEST(FormStructureTest, EncodeUploadRequest) { | 
| std::vector<ServerFieldTypeSet> possible_field_types; | 
| FormData form; | 
| form.method = ASCIIToUTF16("post"); | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
| form_structure->DetermineHeuristicTypes(TestAutofillMetrics()); | 
|  | 
| FormFieldData field; | 
| @@ -1721,7 +1653,7 @@ TEST(FormStructureTest, EncodeUploadRequest) { | 
| possible_field_types.push_back(ServerFieldTypeSet()); | 
| possible_field_types.back().insert(ADDRESS_HOME_COUNTRY); | 
|  | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
|  | 
| ASSERT_EQ(form_structure->field_count(), possible_field_types.size()); | 
| for (size_t i = 0; i < form_structure->field_count(); ++i) | 
| @@ -1779,7 +1711,7 @@ TEST(FormStructureTest, EncodeUploadRequest) { | 
| possible_field_types.back().insert(ADDRESS_BILLING_LINE2); | 
| } | 
|  | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
| ASSERT_EQ(form_structure->field_count(), possible_field_types.size()); | 
| for (size_t i = 0; i < form_structure->field_count(); ++i) | 
| form_structure->field(i)->set_possible_types(possible_field_types[i]); | 
| @@ -1818,7 +1750,7 @@ TEST(FormStructureTest, EncodeUploadRequest) { | 
| possible_field_types.back().insert(ADDRESS_BILLING_LINE1); | 
| possible_field_types.back().insert(ADDRESS_BILLING_LINE2); | 
| } | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
| ASSERT_EQ(form_structure->field_count(), possible_field_types.size()); | 
| for (size_t i = 0; i < form_structure->field_count(); ++i) | 
| form_structure->field(i)->set_possible_types(possible_field_types[i]); | 
| @@ -1831,7 +1763,7 @@ TEST(FormStructureTest, EncodeFieldAssignments) { | 
| std::vector<ServerFieldTypeSet> possible_field_types; | 
| FormData form; | 
| form.method = ASCIIToUTF16("post"); | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
| form_structure->DetermineHeuristicTypes(TestAutofillMetrics()); | 
|  | 
| FormFieldData field; | 
| @@ -1879,7 +1811,7 @@ TEST(FormStructureTest, EncodeFieldAssignments) { | 
| possible_field_types.push_back(ServerFieldTypeSet()); | 
| possible_field_types.back().insert(ADDRESS_HOME_COUNTRY); | 
|  | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
|  | 
| ASSERT_EQ(form_structure->field_count(), possible_field_types.size()); | 
| for (size_t i = 0; i < form_structure->field_count(); ++i) | 
| @@ -1924,7 +1856,7 @@ TEST(FormStructureTest, EncodeFieldAssignments) { | 
| possible_field_types.back().insert(ADDRESS_BILLING_LINE2); | 
| } | 
|  | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
| ASSERT_EQ(form_structure->field_count(), possible_field_types.size()); | 
| for (size_t i = 0; i < form_structure->field_count(); ++i) | 
| form_structure->field(i)->set_possible_types(possible_field_types[i]); | 
| @@ -1973,7 +1905,7 @@ TEST(FormStructureTest, CheckDataPresence) { | 
| field.name = ASCIIToUTF16("email"); | 
| form.fields.push_back(field); | 
|  | 
| -  FormStructure form_structure(form, std::string()); | 
| +  FormStructure form_structure(form); | 
|  | 
| ServerFieldTypeSet unknown_type; | 
| unknown_type.insert(UNKNOWN_TYPE); | 
| @@ -2239,7 +2171,7 @@ TEST(FormStructureTest, CheckMultipleTypes) { | 
| possible_field_types.push_back(ServerFieldTypeSet()); | 
| possible_field_types.back().insert(ADDRESS_HOME_LINE1); | 
|  | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
|  | 
| for (size_t i = 0; i < form_structure->field_count(); ++i) | 
| form_structure->field(i)->set_possible_types(possible_field_types[i]); | 
| @@ -2335,26 +2267,26 @@ TEST(FormStructureTest, CheckFormSignature) { | 
| field.form_control_type = "password"; | 
| form.fields.push_back(field); | 
|  | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
|  | 
| EXPECT_EQ(FormStructureTest::Hash64Bit( | 
| std::string("://&&email&first")), | 
| form_structure->FormSignature()); | 
|  | 
| form.origin = GURL(std::string("http://www.facebook.com")); | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
| EXPECT_EQ(FormStructureTest::Hash64Bit( | 
| std::string("http://www.facebook.com&&email&first")), | 
| form_structure->FormSignature()); | 
|  | 
| form.action = GURL(std::string("https://login.facebook.com/path")); | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
| EXPECT_EQ(FormStructureTest::Hash64Bit( | 
| std::string("https://login.facebook.com&&email&first")), | 
| form_structure->FormSignature()); | 
|  | 
| form.name = ASCIIToUTF16("login_form"); | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
| EXPECT_EQ(FormStructureTest::Hash64Bit( | 
| std::string("https://login.facebook.com&login_form&email&first")), | 
| form_structure->FormSignature()); | 
| @@ -2372,7 +2304,7 @@ TEST(FormStructureTest, CheckFormSignature) { | 
| field.label = ASCIIToUTF16("Random Field label3"); | 
| field.name = ASCIIToUTF16("12345random"); | 
| form.fields.push_back(field); | 
| -  form_structure.reset(new FormStructure(form, std::string())); | 
| +  form_structure.reset(new FormStructure(form)); | 
| EXPECT_EQ(FormStructureTest::Hash64Bit( | 
| std::string("https://login.facebook.com&login_form&email&first&" | 
| "random1234&random&1random&random")), | 
| @@ -2403,12 +2335,12 @@ TEST(FormStructureTest, ToFormData) { | 
| field.form_control_type = "submit"; | 
| form.fields.push_back(field); | 
|  | 
| -  EXPECT_EQ(form, FormStructure(form, std::string()).ToFormData()); | 
| +  EXPECT_EQ(form, FormStructure(form).ToFormData()); | 
|  | 
| // Currently |FormStructure(form_data)ToFormData().user_submitted| is always | 
| // false. This forces a future author that changes this to update this test. | 
| form.user_submitted = true; | 
| -  EXPECT_NE(form, FormStructure(form, std::string()).ToFormData()); | 
| +  EXPECT_NE(form, FormStructure(form).ToFormData()); | 
| } | 
|  | 
| TEST(FormStructureTest, SkipFieldTest) { | 
| @@ -2435,7 +2367,7 @@ TEST(FormStructureTest, SkipFieldTest) { | 
| form.fields.push_back(field); | 
|  | 
| ScopedVector<FormStructure> forms; | 
| -  forms.push_back(new FormStructure(form, std::string())); | 
| +  forms.push_back(new FormStructure(form)); | 
| std::vector<std::string> encoded_signatures; | 
| std::string encoded_xml; | 
|  | 
| @@ -2451,16 +2383,6 @@ TEST(FormStructureTest, SkipFieldTest) { | 
| ASSERT_EQ(1U, encoded_signatures.size()); | 
| EXPECT_EQ(kSignature, encoded_signatures[0]); | 
| EXPECT_EQ(kResponse, encoded_xml); | 
| - | 
| -  AutocheckoutPageMetaData page_meta_data; | 
| -  const char * const kServerResponse = | 
| -      "<autofillqueryresponse><field autofilltype=\"3\" />" | 
| -      "<field autofilltype=\"9\" /></autofillqueryresponse>"; | 
| -  FormStructure::ParseQueryResponse(kServerResponse, forms.get(), | 
| -                                    &page_meta_data, TestAutofillMetrics()); | 
| -  ASSERT_EQ(NAME_FIRST, forms[0]->field(0)->server_type()); | 
| -  ASSERT_EQ(NO_SERVER_DATA, forms[0]->field(1)->server_type()); | 
| -  ASSERT_EQ(EMAIL_ADDRESS, forms[0]->field(2)->server_type()); | 
| } | 
|  | 
| }  // namespace autofill | 
|  |