| // 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_ |