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

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

Issue 381613005: [Autofill] Autofill fails to fill credit card number when split across fields. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Incorporated review inputs. Created 6 years, 3 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 "base/memory/scoped_ptr.h" 5 #include "base/memory/scoped_ptr.h"
6 #include "base/memory/scoped_vector.h" 6 #include "base/memory/scoped_vector.h"
7 #include "base/strings/utf_string_conversions.h" 7 #include "base/strings/utf_string_conversions.h"
8 #include "components/autofill/core/browser/autofill_field.h" 8 #include "components/autofill/core/browser/autofill_field.h"
9 #include "components/autofill/core/browser/autofill_scanner.h" 9 #include "components/autofill/core/browser/autofill_scanner.h"
10 #include "components/autofill/core/browser/credit_card_field.h" 10 #include "components/autofill/core/browser/credit_card_field.h"
11 #include "components/autofill/core/common/form_field_data.h" 11 #include "components/autofill/core/common/form_field_data.h"
12 #include "testing/gtest/include/gtest/gtest.h" 12 #include "testing/gtest/include/gtest/gtest.h"
13 13
14 using base::ASCIIToUTF16; 14 using base::ASCIIToUTF16;
15 15
16 namespace autofill { 16 namespace autofill {
17 17
18 class CreditCardFieldTest : public testing::Test { 18 class CreditCardFieldTest : public testing::Test {
19 public: 19 public:
20 CreditCardFieldTest() {} 20 CreditCardFieldTest() {}
21 virtual ~CreditCardFieldTest() {} 21 virtual ~CreditCardFieldTest() {}
22 22
23 protected: 23 protected:
24 ScopedVector<const AutofillField> list_; 24 ScopedVector<AutofillField> list_;
25 scoped_ptr<const CreditCardField> field_; 25 scoped_ptr<const CreditCardField> field_;
26 ServerFieldTypeMap field_type_map_; 26 ServerFieldTypeMap field_type_map_;
27 27
28 // Parses the contents of |list_| as a form, and stores the result into 28 // Parses the contents of |list_| as a form, and stores the result into
29 // |field_|. 29 // |field_|.
30 void Parse() { 30 void Parse() {
31 AutofillScanner scanner(list_.get()); 31 AutofillScanner scanner(list_.get());
32 field_.reset( 32 field_.reset(
33 static_cast<const CreditCardField*>(CreditCardField::Parse(&scanner))); 33 static_cast<const CreditCardField*>(CreditCardField::Parse(&scanner)));
34 } 34 }
(...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after
373 EXPECT_EQ(CREDIT_CARD_NUMBER, field_type_map_[ASCIIToUTF16("number")]); 373 EXPECT_EQ(CREDIT_CARD_NUMBER, field_type_map_[ASCIIToUTF16("number")]);
374 ASSERT_TRUE(field_type_map_.find(ASCIIToUTF16("month")) != 374 ASSERT_TRUE(field_type_map_.find(ASCIIToUTF16("month")) !=
375 field_type_map_.end()); 375 field_type_map_.end());
376 EXPECT_EQ(CREDIT_CARD_EXP_MONTH, field_type_map_[ASCIIToUTF16("month")]); 376 EXPECT_EQ(CREDIT_CARD_EXP_MONTH, field_type_map_[ASCIIToUTF16("month")]);
377 ASSERT_TRUE(field_type_map_.find(ASCIIToUTF16("year")) != 377 ASSERT_TRUE(field_type_map_.find(ASCIIToUTF16("year")) !=
378 field_type_map_.end()); 378 field_type_map_.end());
379 EXPECT_EQ(CREDIT_CARD_EXP_2_DIGIT_YEAR, 379 EXPECT_EQ(CREDIT_CARD_EXP_2_DIGIT_YEAR,
380 field_type_map_[ASCIIToUTF16("year")]); 380 field_type_map_[ASCIIToUTF16("year")]);
381 } 381 }
382 382
383 TEST_F(CreditCardFieldTest, ParseCreditCardNumberWithSplit) {
384 FormFieldData field;
385 field.form_control_type = "text";
386
387 field.label = ASCIIToUTF16("Card Number");
388 field.name = ASCIIToUTF16("card_number_q1");
389 field.max_length = 4;
390 list_.push_back(new AutofillField(field, ASCIIToUTF16("number1")));
391
392 field.label = ASCIIToUTF16("Card Number");
393 field.name = ASCIIToUTF16("card_number_q2");
394 field.max_length = 4;
395 list_.push_back(new AutofillField(field, ASCIIToUTF16("number2")));
396
397 field.label = ASCIIToUTF16("Card Number");
398 field.name = ASCIIToUTF16("card_number_q3");
399 field.max_length = 4;
400 list_.push_back(new AutofillField(field, ASCIIToUTF16("number3")));
401
402 // For last credit card number input field it simply ignores the |max_length|
403 // attribute. So even having a very big number, does not conside it an invalid
404 // split for autofilling.
405 field.label = ASCIIToUTF16("Card Number");
406 field.name = ASCIIToUTF16("card_number_q4");
407 field.max_length = 20;
408 list_.push_back(new AutofillField(field, ASCIIToUTF16("number4")));
409
410 field.label = ASCIIToUTF16("Exp Month");
411 field.name = ASCIIToUTF16("ccmonth");
412 list_.push_back(new AutofillField(field, ASCIIToUTF16("month5")));
413
414 field.label = ASCIIToUTF16("Exp Year");
415 field.name = ASCIIToUTF16("ccyear");
416 list_.push_back(new AutofillField(field, ASCIIToUTF16("year6")));
417
418 Parse();
419 ASSERT_NE(static_cast<CreditCardField*>(NULL), field_.get());
420 EXPECT_TRUE(ClassifyField());
421
422 ASSERT_TRUE(field_type_map_.find(ASCIIToUTF16("number1")) !=
423 field_type_map_.end());
424 EXPECT_EQ(CREDIT_CARD_NUMBER, field_type_map_[ASCIIToUTF16("number1")]);
425 EXPECT_EQ(0U, list_[0]->credit_card_number_offset());
426
427 ASSERT_TRUE(field_type_map_.find(ASCIIToUTF16("number2")) !=
428 field_type_map_.end());
429 EXPECT_EQ(CREDIT_CARD_NUMBER, field_type_map_[ASCIIToUTF16("number2")]);
430 EXPECT_EQ(4U, list_[1]->credit_card_number_offset());
431
432 ASSERT_TRUE(field_type_map_.find(ASCIIToUTF16("number3")) !=
433 field_type_map_.end());
434 EXPECT_EQ(CREDIT_CARD_NUMBER, field_type_map_[ASCIIToUTF16("number3")]);
435 EXPECT_EQ(8U, list_[2]->credit_card_number_offset());
436
437 ASSERT_TRUE(field_type_map_.find(ASCIIToUTF16("number4")) !=
438 field_type_map_.end());
439 EXPECT_EQ(CREDIT_CARD_NUMBER, field_type_map_[ASCIIToUTF16("number4")]);
440 EXPECT_EQ(12U, list_[3]->credit_card_number_offset());
441
442 ASSERT_TRUE(field_type_map_.find(ASCIIToUTF16("month5")) !=
443 field_type_map_.end());
444 EXPECT_EQ(CREDIT_CARD_EXP_MONTH, field_type_map_[ASCIIToUTF16("month5")]);
445 ASSERT_TRUE(field_type_map_.find(ASCIIToUTF16("year6")) !=
446 field_type_map_.end());
447 EXPECT_EQ(CREDIT_CARD_EXP_4_DIGIT_YEAR,
448 field_type_map_[ASCIIToUTF16("year6")]);
449 }
450
451 TEST_F(CreditCardFieldTest, ParseCreditCardNumberWithInvalidSplit) {
452 FormFieldData field;
453 field.form_control_type = "text";
454
455 field.label = ASCIIToUTF16("Name on Card");
456 field.name = ASCIIToUTF16("name_on_card");
457 list_.push_back(new AutofillField(field, ASCIIToUTF16("name1")));
458
459 field.label = ASCIIToUTF16("Card Number");
460 field.name = ASCIIToUTF16("card_number");
461 list_.push_back(new AutofillField(field, ASCIIToUTF16("number2")));
462
463 field.label = ASCIIToUTF16("Not Card Number");
464 field.name = ASCIIToUTF16("not_card_number");
465 list_.push_back(new AutofillField(field, ASCIIToUTF16("number3")));
466
467 field.label = ASCIIToUTF16("Exp Month");
468 field.name = ASCIIToUTF16("ccmonth");
469 list_.push_back(new AutofillField(field, ASCIIToUTF16("month4")));
470
471 field.label = ASCIIToUTF16("Exp Year");
472 field.name = ASCIIToUTF16("ccyear");
473 list_.push_back(new AutofillField(field, ASCIIToUTF16("year5")));
474
475 Parse();
476 ASSERT_NE(static_cast<CreditCardField*>(NULL), field_.get());
477 EXPECT_TRUE(ClassifyField());
478
479 ASSERT_TRUE(field_type_map_.find(ASCIIToUTF16("name1")) !=
480 field_type_map_.end());
481 EXPECT_EQ(CREDIT_CARD_NAME, field_type_map_[ASCIIToUTF16("name1")]);
482 ASSERT_TRUE(field_type_map_.find(ASCIIToUTF16("number2")) ==
483 field_type_map_.end());
484 ASSERT_TRUE(field_type_map_.find(ASCIIToUTF16("number3")) ==
485 field_type_map_.end());
486 ASSERT_TRUE(field_type_map_.find(ASCIIToUTF16("month4")) !=
487 field_type_map_.end());
488 EXPECT_EQ(CREDIT_CARD_EXP_MONTH, field_type_map_[ASCIIToUTF16("month4")]);
489 ASSERT_TRUE(field_type_map_.find(ASCIIToUTF16("year5")) !=
490 field_type_map_.end());
491 EXPECT_EQ(CREDIT_CARD_EXP_4_DIGIT_YEAR,
492 field_type_map_[ASCIIToUTF16("year5")]);
493 }
494
383 } // namespace autofill 495 } // namespace autofill
OLDNEW
« no previous file with comments | « components/autofill/core/browser/credit_card_field.cc ('k') | components/autofill/core/browser/email_field.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698