// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_AUTOFILL_CONTACT_INFO_H_ #define CHROME_BROWSER_AUTOFILL_CONTACT_INFO_H_ #pragma once #include <vector> #include "base/gtest_prod_util.h" #include "base/string16.h" #include "chrome/browser/autofill/field_types.h" #include "chrome/browser/autofill/form_group.h" // A form group that stores name information. class NameInfo : public FormGroup { public: NameInfo(); NameInfo(const NameInfo& info); virtual ~NameInfo(); NameInfo& operator=(const NameInfo& info); // FormGroup: virtual void GetPossibleFieldTypes(const string16& text, FieldTypeSet* possible_types) const; virtual void GetAvailableFieldTypes(FieldTypeSet* available_types) const; virtual string16 GetInfo(AutofillFieldType type) const; virtual void SetInfo(AutofillFieldType type, const string16& value); private: FRIEND_TEST_ALL_PREFIXES(NameInfoTest, TestSetFullName); // Returns the full name, which can include up to the first, middle, and last // name. string16 FullName() const; // Returns the middle initial if |middle_| is non-empty. Returns an empty // string otherwise. string16 MiddleInitial() const; const string16& first() const { return first_; } const string16& middle() const { return middle_; } const string16& last() const { return last_; } // Returns true if |text| is the first name. bool IsFirstName(const string16& text) const; // Returns true if |text| is the middle name. bool IsMiddleName(const string16& text) const; // Returns true if |text| is the last name. bool IsLastName(const string16& text) const; // Returns true if |text| is the middle initial. bool IsMiddleInitial(const string16& text) const; // Returns true if |text| is the last name. bool IsFullName(const string16& text) const; // Returns true if all of the tokens in |text| match the tokens in // |name_tokens|. bool IsNameMatch(const string16& text, const std::vector<string16>& name_tokens) const; // Returns true if |word| is one of the tokens in |name_tokens|. bool IsWordInName(const string16& word, const std::vector<string16>& name_tokens) const; // Sets |first_| to |first| and |first_tokens_| to the set of tokens in // |first|, made lowercase. void SetFirst(const string16& first); // Sets |middle_| to |middle| and |middle_tokens_| to the set of tokens in // |middle|, made lowercase. void SetMiddle(const string16& middle); // Sets |last_| to |last| and |last_tokens_| to the set of tokens in |last|, // made lowercase. void SetLast(const string16& last); // Sets |first_|, |middle_|, |last_| and |*_tokens_| to the tokenized // |full|. It is tokenized on a space only. void SetFullName(const string16& full); // List of tokens in each part of the name. std::vector<string16> first_tokens_; std::vector<string16> middle_tokens_; std::vector<string16> last_tokens_; string16 first_; string16 middle_; string16 last_; }; class EmailInfo : public FormGroup { public: EmailInfo(); EmailInfo(const EmailInfo& info); virtual ~EmailInfo(); EmailInfo& operator=(const EmailInfo& info); // FormGroup: virtual void GetPossibleFieldTypes(const string16& text, FieldTypeSet* possible_types) const; virtual void GetAvailableFieldTypes(FieldTypeSet* available_types) const; virtual string16 GetInfo(AutofillFieldType type) const; virtual void SetInfo(AutofillFieldType type, const string16& value); private: string16 email_; }; class CompanyInfo : public FormGroup { public: CompanyInfo(); CompanyInfo(const CompanyInfo& info); virtual ~CompanyInfo(); CompanyInfo& operator=(const CompanyInfo& info); // FormGroup: virtual void GetPossibleFieldTypes(const string16& text, FieldTypeSet* possible_types) const; virtual void GetAvailableFieldTypes(FieldTypeSet* available_types) const; virtual string16 GetInfo(AutofillFieldType type) const; virtual void SetInfo(AutofillFieldType type, const string16& value); private: string16 company_name_; }; #endif // CHROME_BROWSER_AUTOFILL_CONTACT_INFO_H_