Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(335)

Side by Side Diff: components/autofill/core/browser/form_structure_unittest.cc

Issue 1411363003: [Autofill] Always show available data when encountering autocomplete attributes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed bug Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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());
311 } 312 }
312 313
314 // Tests that ShouldBeParsed returns true for a form containing less than three
315 // fields if at least one has an autocomplete attribute.
316 TEST_F(FormStructureTest, ShouldBeParsed_TwoFields_HasAutocomplete) {
317 scoped_ptr<FormStructure> form_structure;
318 FormData form;
319 FormFieldData field;
320
321 field.label = ASCIIToUTF16("Name");
322 field.name = ASCIIToUTF16("name");
323 field.form_control_type = "name";
324 field.autocomplete_attribute = "name";
325 form.fields.push_back(field);
326
327 field.label = ASCIIToUTF16("Address");
328 field.name = ASCIIToUTF16("Address");
329 field.form_control_type = "select-one";
330 field.autocomplete_attribute = "";
331 form.fields.push_back(field);
332
333 form_structure.reset(new FormStructure(form));
334 form_structure->ParseFieldTypesFromAutocompleteAttributes();
335 EXPECT_TRUE(form_structure->ShouldBeParsed());
336 }
337
313 TEST_F(FormStructureTest, HeuristicsContactInfo) { 338 TEST_F(FormStructureTest, HeuristicsContactInfo) {
314 scoped_ptr<FormStructure> form_structure; 339 scoped_ptr<FormStructure> form_structure;
315 FormData form; 340 FormData form;
316 341
317 FormFieldData field; 342 FormFieldData field;
318 field.form_control_type = "text"; 343 field.form_control_type = "text";
319 344
320 field.label = ASCIIToUTF16("First Name"); 345 field.label = ASCIIToUTF16("First Name");
321 field.name = ASCIIToUTF16("firstname"); 346 field.name = ASCIIToUTF16("firstname");
322 form.fields.push_back(field); 347 form.fields.push_back(field);
(...skipping 2629 matching lines...) Expand 10 before | Expand all | Expand 10 after
2952 field.autocomplete_attribute = "billing country"; 2977 field.autocomplete_attribute = "billing country";
2953 field.option_contents.push_back(ASCIIToUTF16("Down Under")); 2978 field.option_contents.push_back(ASCIIToUTF16("Down Under"));
2954 field.option_values.push_back(ASCIIToUTF16("AU")); 2979 field.option_values.push_back(ASCIIToUTF16("AU"));
2955 field.option_contents.push_back(ASCIIToUTF16("Fr")); 2980 field.option_contents.push_back(ASCIIToUTF16("Fr"));
2956 field.option_values.push_back(ASCIIToUTF16("")); 2981 field.option_values.push_back(ASCIIToUTF16(""));
2957 field.option_contents.push_back(ASCIIToUTF16("Germany")); 2982 field.option_contents.push_back(ASCIIToUTF16("Germany"));
2958 field.option_values.push_back(ASCIIToUTF16("GRMNY")); 2983 field.option_values.push_back(ASCIIToUTF16("GRMNY"));
2959 form_data.fields.push_back(field); 2984 form_data.fields.push_back(field);
2960 FormStructure form_structure(form_data); 2985 FormStructure form_structure(form_data);
2961 2986
2962 bool unused; 2987 form_structure.ParseFieldTypesFromAutocompleteAttributes();
2963 form_structure.ParseFieldTypesFromAutocompleteAttributes(&unused, &unused);
2964 2988
2965 // All values in <option> value= or contents are returned, set to upper case. 2989 // All values in <option> value= or contents are returned, set to upper case.
2966 std::set<base::string16> possible_values = 2990 std::set<base::string16> possible_values =
2967 form_structure.PossibleValues(ADDRESS_BILLING_COUNTRY); 2991 form_structure.PossibleValues(ADDRESS_BILLING_COUNTRY);
2968 EXPECT_EQ(5U, possible_values.size()); 2992 EXPECT_EQ(5U, possible_values.size());
2969 EXPECT_EQ(1U, possible_values.count(ASCIIToUTF16("AU"))); 2993 EXPECT_EQ(1U, possible_values.count(ASCIIToUTF16("AU")));
2970 EXPECT_EQ(1U, possible_values.count(ASCIIToUTF16("FR"))); 2994 EXPECT_EQ(1U, possible_values.count(ASCIIToUTF16("FR")));
2971 EXPECT_EQ(1U, possible_values.count(ASCIIToUTF16("DOWN UNDER"))); 2995 EXPECT_EQ(1U, possible_values.count(ASCIIToUTF16("DOWN UNDER")));
2972 EXPECT_EQ(1U, possible_values.count(ASCIIToUTF16("GERMANY"))); 2996 EXPECT_EQ(1U, possible_values.count(ASCIIToUTF16("GERMANY")));
2973 EXPECT_EQ(1U, possible_values.count(ASCIIToUTF16("GRMNY"))); 2997 EXPECT_EQ(1U, possible_values.count(ASCIIToUTF16("GRMNY")));
2974 EXPECT_EQ(0U, possible_values.count(ASCIIToUTF16("Fr"))); 2998 EXPECT_EQ(0U, possible_values.count(ASCIIToUTF16("Fr")));
2975 EXPECT_EQ(0U, possible_values.count(ASCIIToUTF16("DE"))); 2999 EXPECT_EQ(0U, possible_values.count(ASCIIToUTF16("DE")));
2976 3000
2977 // No field for the given type; empty value set. 3001 // No field for the given type; empty value set.
2978 EXPECT_EQ(0U, form_structure.PossibleValues(ADDRESS_HOME_COUNTRY).size()); 3002 EXPECT_EQ(0U, form_structure.PossibleValues(ADDRESS_HOME_COUNTRY).size());
2979 3003
2980 // A freeform input (<input>) allows any value (overriding other <select>s). 3004 // A freeform input (<input>) allows any value (overriding other <select>s).
2981 FormFieldData freeform_field; 3005 FormFieldData freeform_field;
2982 freeform_field.autocomplete_attribute = "billing country"; 3006 freeform_field.autocomplete_attribute = "billing country";
2983 form_data.fields.push_back(freeform_field); 3007 form_data.fields.push_back(freeform_field);
2984 FormStructure form_structure2(form_data); 3008 FormStructure form_structure2(form_data);
2985 form_structure2.ParseFieldTypesFromAutocompleteAttributes(&unused, &unused); 3009 form_structure2.ParseFieldTypesFromAutocompleteAttributes();
2986 EXPECT_EQ(0U, form_structure2.PossibleValues(ADDRESS_BILLING_COUNTRY).size()); 3010 EXPECT_EQ(0U, form_structure2.PossibleValues(ADDRESS_BILLING_COUNTRY).size());
2987 } 3011 }
2988 3012
2989 TEST_F(FormStructureTest, ParseQueryResponse) { 3013 TEST_F(FormStructureTest, ParseQueryResponse) {
2990 FormData form; 3014 FormData form;
2991 form.origin = GURL("http://foo.com"); 3015 form.origin = GURL("http://foo.com");
2992 FormFieldData field; 3016 FormFieldData field;
2993 field.form_control_type = "text"; 3017 field.form_control_type = "text";
2994 3018
2995 field.label = ASCIIToUTF16("fullname"); 3019 field.label = ASCIIToUTF16("fullname");
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
3068 "</autofillqueryresponse>"; 3092 "</autofillqueryresponse>";
3069 3093
3070 FormStructure::ParseQueryResponse(response, forms.get(), nullptr); 3094 FormStructure::ParseQueryResponse(response, forms.get(), nullptr);
3071 3095
3072 ASSERT_GE(forms[0]->field_count(), 2U); 3096 ASSERT_GE(forms[0]->field_count(), 2U);
3073 EXPECT_EQ(NO_SERVER_DATA, forms[0]->field(0)->server_type()); 3097 EXPECT_EQ(NO_SERVER_DATA, forms[0]->field(0)->server_type());
3074 EXPECT_EQ(76, forms[0]->field(1)->server_type()); 3098 EXPECT_EQ(76, forms[0]->field(1)->server_type());
3075 } 3099 }
3076 3100
3077 } // namespace autofill 3101 } // namespace autofill
OLDNEW
« no previous file with comments | « components/autofill/core/browser/form_structure.cc ('k') | components/autofill/core/common/autofill_constants.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698