16516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru// Copyright 2013 The Chromium Authors. All rights reserved.
26516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru// Use of this source code is governed by a BSD-style license that can be
36516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru// found in the LICENSE file.
46516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru
56516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru#ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_VALIDATION_H_
66516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru#define COMPONENTS_AUTOFILL_CORE_BROWSER_VALIDATION_H_
76516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru
86516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru#include "base/strings/string16.h"
96516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru
106516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Querunamespace base {
116516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queruclass Time;
126516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru}  // namespace base;
136516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru
146516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Querunamespace autofill {
156516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru
166516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru// Returns true if |year| and |month| describe a date later than |now|.
176516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru// |year| must have 4 digits.
186516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Querubool IsValidCreditCardExpirationDate(const base::string16& year,
196516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru                                     const base::string16& month,
206516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru                                     const base::Time& now);
216516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Querubool IsValidCreditCardExpirationDate(int year,
226516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru                                     int month,
236516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru                                     const base::Time& now);
246516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru
256516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru// Returns true if |text| looks like a valid credit card number.
266516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru// Uses the Luhn formula to validate the number.
276516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Querubool IsValidCreditCardNumber(const base::string16& text);
286516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru
296516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru// Returns true if |text| looks like a valid credit card security code.
306516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Querubool IsValidCreditCardSecurityCode(const base::string16& text);
316516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru
326516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru// Returns true if |code| looks like a valid credit card security code
336516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru// for the type of credit card designated by |number|.
346516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Querubool IsValidCreditCardSecurityCode(const base::string16& code,
356516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru                                   const base::string16& number);
366516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru
376516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru// Returns true if |text| looks like a valid e-mail address.
386516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Querubool IsValidEmailAddress(const base::string16& text);
396516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru
406516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru// Returns true if |text| is a valid US state name or abbreviation.  It is
416516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru// case insensitive.  Valid for US states only.
426516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Querubool IsValidState(const base::string16& text);
436516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru
446516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru// Returns true if |text| looks like a valid zip code.
456516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru// Valid for US zip codes only.
466516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Querubool IsValidZip(const base::string16& text);
476516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru
486516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru// Returns true if |text| looks like an SSN, with or without separators.
496516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Querubool IsSSN(const base::string16& text);
506516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru
516516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru}  // namespace autofill
526516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru
536516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru#endif  // COMPONENTS_AUTOFILL_CORE_BROWSER_VALIDATION_H_
546516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru