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

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

Issue 853523004: Autofill: Set requirements for number of recognized fields in an autofillable form (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix bug, adjust tests Created 5 years, 11 months 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/strings/string_util.h" 9 #include "base/strings/string_util.h"
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 field.form_control_type = "submit"; 104 field.form_control_type = "submit";
105 form.fields.push_back(field); 105 form.fields.push_back(field);
106 106
107 // Only text and select fields that are heuristically matched are counted. 107 // Only text and select fields that are heuristically matched are counted.
108 form_structure.reset(new FormStructure(form)); 108 form_structure.reset(new FormStructure(form));
109 form_structure->DetermineHeuristicTypes(); 109 form_structure->DetermineHeuristicTypes();
110 EXPECT_EQ(1U, form_structure->autofill_count()); 110 EXPECT_EQ(1U, form_structure->autofill_count());
111 111
112 // Add a field with should_autocomplete=false. This should not be considered a 112 // Add a field with should_autocomplete=false. This should not be considered a
113 // fillable field. 113 // fillable field.
114 field.label = ASCIIToUTF16("address1"); 114 field.label = ASCIIToUTF16("city");
115 field.name = ASCIIToUTF16("address1"); 115 field.name = ASCIIToUTF16("city");
116 field.form_control_type = "text"; 116 field.form_control_type = "text";
117 field.should_autocomplete = false; 117 field.should_autocomplete = false;
118 form.fields.push_back(field); 118 form.fields.push_back(field);
119 119
120 form_structure.reset(new FormStructure(form)); 120 form_structure.reset(new FormStructure(form));
121 form_structure->DetermineHeuristicTypes(); 121 form_structure->DetermineHeuristicTypes();
122 EXPECT_EQ(2U, form_structure->autofill_count()); 122 EXPECT_EQ(2U, form_structure->autofill_count());
123 123
124 base::CommandLine::ForCurrentProcess()->AppendSwitch( 124 base::CommandLine::ForCurrentProcess()->AppendSwitch(
125 switches::kRespectAutocompleteOffForAutofill); 125 switches::kRespectAutocompleteOffForAutofill);
(...skipping 935 matching lines...) Expand 10 before | Expand all | Expand 10 after
1061 form.fields.push_back(field); 1061 form.fields.push_back(field);
1062 1062
1063 field.label = ASCIIToUTF16("Address Line3"); 1063 field.label = ASCIIToUTF16("Address Line3");
1064 field.name = ASCIIToUTF16("billing.address.addressLine3"); 1064 field.name = ASCIIToUTF16("billing.address.addressLine3");
1065 form.fields.push_back(field); 1065 form.fields.push_back(field);
1066 1066
1067 field.label = ASCIIToUTF16("Address Line4"); 1067 field.label = ASCIIToUTF16("Address Line4");
1068 field.name = ASCIIToUTF16("billing.address.addressLine4"); 1068 field.name = ASCIIToUTF16("billing.address.addressLine4");
1069 form.fields.push_back(field); 1069 form.fields.push_back(field);
1070 1070
1071 field.label = ASCIIToUTF16("City");
1072 field.name = ASCIIToUTF16("billing.address.city");
1073 form.fields.push_back(field);
1074
1071 form_structure.reset(new FormStructure(form)); 1075 form_structure.reset(new FormStructure(form));
1072 form_structure->DetermineHeuristicTypes(); 1076 form_structure->DetermineHeuristicTypes();
1073 ASSERT_EQ(4U, form_structure->field_count()); 1077 ASSERT_EQ(5U, form_structure->field_count());
1074 ASSERT_EQ(3U, form_structure->autofill_count()); 1078 EXPECT_EQ(4U, form_structure->autofill_count());
1075 1079
1076 // Address Line 1. 1080 // Address Line 1.
1077 EXPECT_EQ(ADDRESS_HOME_LINE1, form_structure->field(0)->heuristic_type()); 1081 EXPECT_EQ(ADDRESS_HOME_LINE1, form_structure->field(0)->heuristic_type());
1078 // Address Line 2. 1082 // Address Line 2.
1079 EXPECT_EQ(ADDRESS_HOME_LINE2, form_structure->field(1)->heuristic_type()); 1083 EXPECT_EQ(ADDRESS_HOME_LINE2, form_structure->field(1)->heuristic_type());
1080 // Address Line 3. 1084 // Address Line 3.
1081 EXPECT_EQ(ADDRESS_HOME_LINE3, form_structure->field(2)->heuristic_type()); 1085 EXPECT_EQ(ADDRESS_HOME_LINE3, form_structure->field(2)->heuristic_type());
1082 // Address Line 4 (ignored). 1086 // Address Line 4 (ignored).
1083 EXPECT_EQ(UNKNOWN_TYPE, form_structure->field(3)->heuristic_type()); 1087 EXPECT_EQ(UNKNOWN_TYPE, form_structure->field(3)->heuristic_type());
1084 } 1088 }
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after
1323 field.form_control_type = "text"; 1327 field.form_control_type = "text";
1324 1328
1325 field.label = ASCIIToUTF16("Name on Card"); 1329 field.label = ASCIIToUTF16("Name on Card");
1326 field.name = ASCIIToUTF16("name_on_card"); 1330 field.name = ASCIIToUTF16("name_on_card");
1327 form.fields.push_back(field); 1331 form.fields.push_back(field);
1328 1332
1329 field.label = ASCIIToUTF16("Address"); 1333 field.label = ASCIIToUTF16("Address");
1330 field.name = ASCIIToUTF16("billing_address"); 1334 field.name = ASCIIToUTF16("billing_address");
1331 form.fields.push_back(field); 1335 form.fields.push_back(field);
1332 1336
1337 field.label = ASCIIToUTF16("City");
1338 field.name = ASCIIToUTF16("city");
1339 form.fields.push_back(field);
1340
1333 field.label = ASCIIToUTF16("Card Number"); 1341 field.label = ASCIIToUTF16("Card Number");
1334 field.name = ASCIIToUTF16("card_number"); 1342 field.name = ASCIIToUTF16("card_number");
1335 form.fields.push_back(field); 1343 form.fields.push_back(field);
1336 1344
1337 field.label = ASCIIToUTF16("Expiration Date"); 1345 field.label = ASCIIToUTF16("Expiration Date");
1338 field.name = ASCIIToUTF16("expiration_month"); 1346 field.name = ASCIIToUTF16("expiration_month");
1339 form.fields.push_back(field); 1347 form.fields.push_back(field);
1340 1348
1341 field.label = ASCIIToUTF16("Expiration Year"); 1349 field.label = ASCIIToUTF16("Expiration Year");
1342 field.name = ASCIIToUTF16("expiration_year"); 1350 field.name = ASCIIToUTF16("expiration_year");
1343 form.fields.push_back(field); 1351 form.fields.push_back(field);
1344 1352
1345 form_structure.reset(new FormStructure(form)); 1353 form_structure.reset(new FormStructure(form));
1346 form_structure->DetermineHeuristicTypes(); 1354 form_structure->DetermineHeuristicTypes();
1347 EXPECT_TRUE(form_structure->IsAutofillable()); 1355 EXPECT_TRUE(form_structure->IsAutofillable());
1348 1356
1349 // Expect the correct number of fields. 1357 // Expect the correct number of fields.
1350 ASSERT_EQ(5U, form_structure->field_count()); 1358 ASSERT_EQ(6U, form_structure->field_count());
1351 EXPECT_EQ(5U, form_structure->autofill_count()); 1359 EXPECT_EQ(6U, form_structure->autofill_count());
1352 1360
1353 // Name on Card. 1361 // Name on Card.
1354 EXPECT_EQ(CREDIT_CARD_NAME, form_structure->field(0)->heuristic_type()); 1362 EXPECT_EQ(CREDIT_CARD_NAME, form_structure->field(0)->heuristic_type());
1355 // Address. 1363 // Address.
1356 EXPECT_EQ(ADDRESS_HOME_LINE1, form_structure->field(1)->heuristic_type()); 1364 EXPECT_EQ(ADDRESS_HOME_LINE1, form_structure->field(1)->heuristic_type());
1365 // City.
1366 EXPECT_EQ(ADDRESS_HOME_CITY, form_structure->field(2)->heuristic_type());
1357 // Card Number. 1367 // Card Number.
1358 EXPECT_EQ(CREDIT_CARD_NUMBER, form_structure->field(2)->heuristic_type()); 1368 EXPECT_EQ(CREDIT_CARD_NUMBER, form_structure->field(3)->heuristic_type());
1359 // Expiration Date. 1369 // Expiration Date.
1360 EXPECT_EQ(CREDIT_CARD_EXP_MONTH, form_structure->field(3)->heuristic_type()); 1370 EXPECT_EQ(CREDIT_CARD_EXP_MONTH, form_structure->field(4)->heuristic_type());
1361 // Expiration Year. 1371 // Expiration Year.
1362 EXPECT_EQ(CREDIT_CARD_EXP_4_DIGIT_YEAR, 1372 EXPECT_EQ(CREDIT_CARD_EXP_4_DIGIT_YEAR,
1363 form_structure->field(4)->heuristic_type()); 1373 form_structure->field(5)->heuristic_type());
1364 } 1374 }
1365 1375
1366 TEST(FormStructureTest, CVCCodeClash) { 1376 TEST(FormStructureTest, CVCCodeClash) {
1367 scoped_ptr<FormStructure> form_structure; 1377 scoped_ptr<FormStructure> form_structure;
1368 FormData form; 1378 FormData form;
1369 1379
1370 FormFieldData field; 1380 FormFieldData field;
1371 field.form_control_type = "text"; 1381 field.form_control_type = "text";
1372 1382
1373 field.label = ASCIIToUTF16("Card number"); 1383 field.label = ASCIIToUTF16("Card number");
(...skipping 1039 matching lines...) Expand 10 before | Expand all | Expand 10 after
2413 std::string response = 2423 std::string response =
2414 "<autofillqueryresponse>" 2424 "<autofillqueryresponse>"
2415 "<field autofilltype=\"7\" />" 2425 "<field autofilltype=\"7\" />"
2416 "<field autofilltype=\"30\" />" 2426 "<field autofilltype=\"30\" />"
2417 "<field autofilltype=\"9\" />" 2427 "<field autofilltype=\"9\" />"
2418 "<field autofilltype=\"0\" />" 2428 "<field autofilltype=\"0\" />"
2419 "</autofillqueryresponse>"; 2429 "</autofillqueryresponse>";
2420 2430
2421 FormStructure::ParseQueryResponse(response, forms.get()); 2431 FormStructure::ParseQueryResponse(response, forms.get());
2422 2432
2433 ASSERT_GE(forms[0]->field_count(), 2U);
2434 ASSERT_GE(forms[1]->field_count(), 2U);
2423 EXPECT_EQ(7, forms[0]->field(0)->server_type()); 2435 EXPECT_EQ(7, forms[0]->field(0)->server_type());
2424 EXPECT_EQ(30, forms[0]->field(1)->server_type()); 2436 EXPECT_EQ(30, forms[0]->field(1)->server_type());
2425 EXPECT_EQ(9, forms[1]->field(0)->server_type()); 2437 EXPECT_EQ(9, forms[1]->field(0)->server_type());
2426 EXPECT_EQ(0, forms[1]->field(1)->server_type()); 2438 EXPECT_EQ(0, forms[1]->field(1)->server_type());
2427 } 2439 }
2428 2440
2429 // If user defined types are present, only parse password fields. 2441 // If user defined types are present, only parse password fields.
2430 TEST(FormStructureTest, ParseQueryResponseAuthorDefinedTypes) { 2442 TEST(FormStructureTest, ParseQueryResponseAuthorDefinedTypes) {
2431 FormData form; 2443 FormData form;
2432 FormFieldData field; 2444 FormFieldData field;
(...skipping 15 matching lines...) Expand all
2448 forms.front()->DetermineHeuristicTypes(); 2460 forms.front()->DetermineHeuristicTypes();
2449 2461
2450 std::string response = 2462 std::string response =
2451 "<autofillqueryresponse>" 2463 "<autofillqueryresponse>"
2452 "<field autofilltype=\"9\" />" 2464 "<field autofilltype=\"9\" />"
2453 "<field autofilltype=\"76\" />" 2465 "<field autofilltype=\"76\" />"
2454 "</autofillqueryresponse>"; 2466 "</autofillqueryresponse>";
2455 2467
2456 FormStructure::ParseQueryResponse(response, forms.get()); 2468 FormStructure::ParseQueryResponse(response, forms.get());
2457 2469
2470 ASSERT_GE(forms[0]->field_count(), 2U);
2458 EXPECT_EQ(NO_SERVER_DATA, forms[0]->field(0)->server_type()); 2471 EXPECT_EQ(NO_SERVER_DATA, forms[0]->field(0)->server_type());
2459 EXPECT_EQ(76, forms[0]->field(1)->server_type()); 2472 EXPECT_EQ(76, forms[0]->field(1)->server_type());
2460 } 2473 }
2461 2474
2462 } // namespace autofill 2475 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698