OLD | NEW |
---|---|
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "components/autofill/core/browser/form_structure.h" | 5 #include "components/autofill/core/browser/form_structure.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
9 #include "base/metrics/field_trial.h" | 9 #include "base/metrics/field_trial.h" |
10 #include "base/strings/string_util.h" | 10 #include "base/strings/string_util.h" |
(...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
298 | 298 |
299 field.label = ASCIIToUTF16("Country"); | 299 field.label = ASCIIToUTF16("Country"); |
300 field.name = ASCIIToUTF16("country"); | 300 field.name = ASCIIToUTF16("country"); |
301 field.form_control_type = "select-one"; | 301 field.form_control_type = "select-one"; |
302 form.fields.push_back(field); | 302 form.fields.push_back(field); |
303 | 303 |
304 form_structure.reset(new FormStructure(form)); | 304 form_structure.reset(new FormStructure(form)); |
305 EXPECT_TRUE(form_structure->ShouldBeParsed()); | 305 EXPECT_TRUE(form_structure->ShouldBeParsed()); |
306 | 306 |
307 form.fields[0].form_control_type = "select-one"; | 307 form.fields[0].form_control_type = "select-one"; |
308 | |
308 // Now, no text fields. | 309 // Now, no text fields. |
309 form_structure.reset(new FormStructure(form)); | 310 form_structure.reset(new FormStructure(form)); |
310 EXPECT_FALSE(form_structure->ShouldBeParsed()); | 311 EXPECT_FALSE(form_structure->ShouldBeParsed()); |
312 | |
313 // The form has two fields but one has the autocomplete attribute | |
Mathieu
2015/10/20 21:03:11
Please make a separate test case
sebsg
2015/10/21 18:20:50
Done.
| |
314 form.fields.clear(); | |
315 | |
316 field.label = ASCIIToUTF16("Name"); | |
317 field.name = ASCIIToUTF16("name"); | |
318 field.form_control_type = "name"; | |
319 field.autocomplete_attribute = "name"; | |
320 form.fields.push_back(field); | |
321 | |
322 field.label = ASCIIToUTF16("Address"); | |
323 field.name = ASCIIToUTF16("Address"); | |
324 field.form_control_type = "select-one"; | |
325 field.autocomplete_attribute = ""; | |
326 form.fields.push_back(field); | |
327 | |
328 form_structure.reset(new FormStructure(form)); | |
329 form_structure->ParseFieldTypesFromAutocompleteAttributes(); | |
330 EXPECT_TRUE(form_structure->ShouldBeParsed()); | |
311 } | 331 } |
312 | 332 |
313 TEST_F(FormStructureTest, HeuristicsContactInfo) { | 333 TEST_F(FormStructureTest, HeuristicsContactInfo) { |
314 scoped_ptr<FormStructure> form_structure; | 334 scoped_ptr<FormStructure> form_structure; |
315 FormData form; | 335 FormData form; |
316 | 336 |
317 FormFieldData field; | 337 FormFieldData field; |
318 field.form_control_type = "text"; | 338 field.form_control_type = "text"; |
319 | 339 |
320 field.label = ASCIIToUTF16("First Name"); | 340 field.label = ASCIIToUTF16("First Name"); |
(...skipping 2528 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2849 field.autocomplete_attribute = "billing country"; | 2869 field.autocomplete_attribute = "billing country"; |
2850 field.option_contents.push_back(ASCIIToUTF16("Down Under")); | 2870 field.option_contents.push_back(ASCIIToUTF16("Down Under")); |
2851 field.option_values.push_back(ASCIIToUTF16("AU")); | 2871 field.option_values.push_back(ASCIIToUTF16("AU")); |
2852 field.option_contents.push_back(ASCIIToUTF16("Fr")); | 2872 field.option_contents.push_back(ASCIIToUTF16("Fr")); |
2853 field.option_values.push_back(ASCIIToUTF16("")); | 2873 field.option_values.push_back(ASCIIToUTF16("")); |
2854 field.option_contents.push_back(ASCIIToUTF16("Germany")); | 2874 field.option_contents.push_back(ASCIIToUTF16("Germany")); |
2855 field.option_values.push_back(ASCIIToUTF16("GRMNY")); | 2875 field.option_values.push_back(ASCIIToUTF16("GRMNY")); |
2856 form_data.fields.push_back(field); | 2876 form_data.fields.push_back(field); |
2857 FormStructure form_structure(form_data); | 2877 FormStructure form_structure(form_data); |
2858 | 2878 |
2859 bool unused; | 2879 form_structure.ParseFieldTypesFromAutocompleteAttributes(); |
2860 form_structure.ParseFieldTypesFromAutocompleteAttributes(&unused, &unused); | |
2861 | 2880 |
2862 // All values in <option> value= or contents are returned, set to upper case. | 2881 // All values in <option> value= or contents are returned, set to upper case. |
2863 std::set<base::string16> possible_values = | 2882 std::set<base::string16> possible_values = |
2864 form_structure.PossibleValues(ADDRESS_BILLING_COUNTRY); | 2883 form_structure.PossibleValues(ADDRESS_BILLING_COUNTRY); |
2865 EXPECT_EQ(5U, possible_values.size()); | 2884 EXPECT_EQ(5U, possible_values.size()); |
2866 EXPECT_EQ(1U, possible_values.count(ASCIIToUTF16("AU"))); | 2885 EXPECT_EQ(1U, possible_values.count(ASCIIToUTF16("AU"))); |
2867 EXPECT_EQ(1U, possible_values.count(ASCIIToUTF16("FR"))); | 2886 EXPECT_EQ(1U, possible_values.count(ASCIIToUTF16("FR"))); |
2868 EXPECT_EQ(1U, possible_values.count(ASCIIToUTF16("DOWN UNDER"))); | 2887 EXPECT_EQ(1U, possible_values.count(ASCIIToUTF16("DOWN UNDER"))); |
2869 EXPECT_EQ(1U, possible_values.count(ASCIIToUTF16("GERMANY"))); | 2888 EXPECT_EQ(1U, possible_values.count(ASCIIToUTF16("GERMANY"))); |
2870 EXPECT_EQ(1U, possible_values.count(ASCIIToUTF16("GRMNY"))); | 2889 EXPECT_EQ(1U, possible_values.count(ASCIIToUTF16("GRMNY"))); |
2871 EXPECT_EQ(0U, possible_values.count(ASCIIToUTF16("Fr"))); | 2890 EXPECT_EQ(0U, possible_values.count(ASCIIToUTF16("Fr"))); |
2872 EXPECT_EQ(0U, possible_values.count(ASCIIToUTF16("DE"))); | 2891 EXPECT_EQ(0U, possible_values.count(ASCIIToUTF16("DE"))); |
2873 | 2892 |
2874 // No field for the given type; empty value set. | 2893 // No field for the given type; empty value set. |
2875 EXPECT_EQ(0U, form_structure.PossibleValues(ADDRESS_HOME_COUNTRY).size()); | 2894 EXPECT_EQ(0U, form_structure.PossibleValues(ADDRESS_HOME_COUNTRY).size()); |
2876 | 2895 |
2877 // A freeform input (<input>) allows any value (overriding other <select>s). | 2896 // A freeform input (<input>) allows any value (overriding other <select>s). |
2878 FormFieldData freeform_field; | 2897 FormFieldData freeform_field; |
2879 freeform_field.autocomplete_attribute = "billing country"; | 2898 freeform_field.autocomplete_attribute = "billing country"; |
2880 form_data.fields.push_back(freeform_field); | 2899 form_data.fields.push_back(freeform_field); |
2881 FormStructure form_structure2(form_data); | 2900 FormStructure form_structure2(form_data); |
2882 form_structure2.ParseFieldTypesFromAutocompleteAttributes(&unused, &unused); | 2901 form_structure2.ParseFieldTypesFromAutocompleteAttributes(); |
2883 EXPECT_EQ(0U, form_structure2.PossibleValues(ADDRESS_BILLING_COUNTRY).size()); | 2902 EXPECT_EQ(0U, form_structure2.PossibleValues(ADDRESS_BILLING_COUNTRY).size()); |
2884 } | 2903 } |
2885 | 2904 |
2886 TEST_F(FormStructureTest, ParseQueryResponse) { | 2905 TEST_F(FormStructureTest, ParseQueryResponse) { |
2887 FormData form; | 2906 FormData form; |
2888 form.origin = GURL("http://foo.com"); | 2907 form.origin = GURL("http://foo.com"); |
2889 FormFieldData field; | 2908 FormFieldData field; |
2890 field.form_control_type = "text"; | 2909 field.form_control_type = "text"; |
2891 | 2910 |
2892 field.label = ASCIIToUTF16("fullname"); | 2911 field.label = ASCIIToUTF16("fullname"); |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2965 "</autofillqueryresponse>"; | 2984 "</autofillqueryresponse>"; |
2966 | 2985 |
2967 FormStructure::ParseQueryResponse(response, forms.get(), nullptr); | 2986 FormStructure::ParseQueryResponse(response, forms.get(), nullptr); |
2968 | 2987 |
2969 ASSERT_GE(forms[0]->field_count(), 2U); | 2988 ASSERT_GE(forms[0]->field_count(), 2U); |
2970 EXPECT_EQ(NO_SERVER_DATA, forms[0]->field(0)->server_type()); | 2989 EXPECT_EQ(NO_SERVER_DATA, forms[0]->field(0)->server_type()); |
2971 EXPECT_EQ(76, forms[0]->field(1)->server_type()); | 2990 EXPECT_EQ(76, forms[0]->field(1)->server_type()); |
2972 } | 2991 } |
2973 | 2992 |
2974 } // namespace autofill | 2993 } // namespace autofill |
OLD | NEW |