1868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#ifndef COMPONENTS_AUTOFILL_CONTENT_BROWSER_WALLET_INSTRUMENT_H_ 6868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#define COMPONENTS_AUTOFILL_CONTENT_BROWSER_WALLET_INSTRUMENT_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <string> 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/basictypes.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/memory/scoped_ptr.h" 11868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/string16.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace base { 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class DictionaryValue; 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace autofill { 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class AutofillProfile; 20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class CreditCard; 21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace wallet { 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class Address; 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// This class contains all the data necessary to save a new instrument to a 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// user's Google Wallet using WalletClient::SaveInstrument or 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// WalletClient::SaveInstrumentAndAddress. 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class Instrument { 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) enum FormOfPayment { 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) UNKNOWN, 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) VISA, 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MASTER_CARD, 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AMEX, 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DISCOVER, 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) JCB, 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }; 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Convert the info in |card| to an Instrument using |profile| for address. 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Instrument(const CreditCard& card, 42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const base::string16& card_verification_number, 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const AutofillProfile& profile); 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) Instrument(const base::string16& primary_account_number, 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const base::string16& card_verification_number, 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int expiration_month, 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int expiration_year, 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) FormOfPayment form_of_payment, 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<Address> address); 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Instrument(const Instrument& instrument); 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ~Instrument(); 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<base::DictionaryValue> ToDictionary() const; 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 58c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const base::string16& primary_account_number() const { 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return primary_account_number_; 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const base::string16& card_verification_number() const { 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return card_verification_number_; 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int expiration_month() const { return expiration_month_; } 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int expiration_year() const { return expiration_year_; } 66ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch const Address* address() const { return address_.get(); } 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) FormOfPayment form_of_payment() const { return form_of_payment_; } 687dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const base::string16& last_four_digits() const { return last_four_digits_; } 69ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch const std::string& object_id() const { return object_id_; } 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void Init(); 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // |primary_account_number_| is expected to be \d{12-19}. 75c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::string16 primary_account_number_; 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // |card_verification_number_| is expected to be \d{3-4}. 78c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::string16 card_verification_number_; 792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // |expiration month_| should be 1-12. 812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int expiration_month_; 822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // |expiration_year_| should be a 4-digit year. 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int expiration_year_; 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // The payment network of the instrument, e.g. Visa. 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) FormOfPayment form_of_payment_; 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // The billing address of the instrument. 902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<Address> address_; 912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // The last four digits of |primary_account_number_|. 93c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::string16 last_four_digits_; 942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 95ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // Externalized Online Wallet id for this instrument. 96ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch std::string object_id_; 97ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DISALLOW_ASSIGN(Instrument); 992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace wallet 1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace autofill 1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 104868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#endif // COMPONENTS_AUTOFILL_CONTENT_BROWSER_WALLET_INSTRUMENT_H_ 105