1eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_CREDIT_CARD_FIELD_H_ 6eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#define COMPONENTS_AUTOFILL_CORE_BROWSER_CREDIT_CARD_FIELD_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <vector> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/gtest_prod_util.h" 13eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "components/autofill/core/browser/autofill_type.h" 14eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "components/autofill/core/browser/form_field.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace autofill { 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class AutofillField; 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class AutofillScanner; 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class CreditCardField : public FormField { 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static FormField* Parse(AutofillScanner* scanner); 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // FormField: 273240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch virtual bool ClassifyField(ServerFieldTypeMap* map) const OVERRIDE; 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(CreditCardFieldTest, ParseMiniumCreditCard); 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(CreditCardFieldTest, ParseFullCreditCard); 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(CreditCardFieldTest, ParseCreditCardType); 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(CreditCardFieldTest, ParseExpMonthYear); 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(CreditCardFieldTest, ParseExpMonthYear2); 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(CreditCardFieldTest, ParseExpField); 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(CreditCardFieldTest, ParseExpField2DigitYear); 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(CreditCardFieldTest, 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ParseCreditCardHolderNameWithCCFullName); 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CreditCardField(); 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const AutofillField* cardholder_; // Optional. 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Occasionally pages have separate fields for the cardholder's first and 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // last names; for such pages cardholder_ holds the first name field and 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // we store the last name field here. 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // (We could store an embedded NameField object here, but we don't do so 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // because the text patterns for matching a cardholder name are different 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // than for ordinary names, and because cardholder names never have titles, 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // middle names or suffixes.) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const AutofillField* cardholder_last_; 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(jhawkins): Parse the select control. 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const AutofillField* type_; // Optional. 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const AutofillField* number_; // Required. 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The 3-digit card verification number; we don't currently fill this. 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const AutofillField* verification_; 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Either |expiration_date_| or both |expiration_month_| and 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // |expiration_year_| are required. 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const AutofillField* expiration_month_; 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const AutofillField* expiration_year_; 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const AutofillField* expiration_date_; 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // True if the year is detected to be a 2-digit year; otherwise, we assume 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // a 4-digit year. 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool is_two_digit_year_; 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(CreditCardField); 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace autofill 74c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 75eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#endif // COMPONENTS_AUTOFILL_CORE_BROWSER_CREDIT_CARD_FIELD_H_ 76