contact_info.h revision c407dc5cd9bdc5668497f21b26b09d988ab439de
1c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Copyright (c) 2010 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#ifndef CHROME_BROWSER_AUTOFILL_CONTACT_INFO_H_ 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define CHROME_BROWSER_AUTOFILL_CONTACT_INFO_H_ 7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <vector> 9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/string16.h" 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/autofill/form_group.h" 12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtypedef std::vector<string16> NameTokens; 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// A form group that stores contact information. 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass ContactInfo : public FormGroup { 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ContactInfo() {} 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // FormGroup implementation: 21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual FormGroup* Clone() const; 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void GetPossibleFieldTypes(const string16& text, 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch FieldTypeSet* possible_types) const; 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void GetAvailableFieldTypes(FieldTypeSet* available_types) const; 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void FindInfoMatches(const AutoFillType& type, 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const string16& info, 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch std::vector<string16>* matched_text) const; 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual string16 GetFieldText(const AutoFillType& type) const; 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void SetInfo(const AutoFillType& type, const string16& value); 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private: 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch friend class ContactInfoTest; 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch explicit ContactInfo(const ContactInfo& contact_info); 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void operator=(const ContactInfo& info); 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Returns the full name, which can include up to the first, middle, middle 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // initial, last name, and suffix. 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch string16 FullName() const; 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Returns the middle initial if |middle_| is non-empty. Returns an empty 41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // string otherwise. 42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch string16 MiddleInitial() const; 43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const string16& first() const { return first_; } 45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const string16& middle() const { return middle_; } 46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const string16& last() const { return last_; } 47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const string16& suffix() const { return suffix_; } 48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const string16& email() const { return email_; } 49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const string16& company_name() const { return company_name_; } 50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // A helper function for FindInfoMatches that only handles matching the info 52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // with the requested field type. 53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool FindInfoMatchesHelper(const AutoFillFieldType& field_type, 54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const string16& info, 55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch string16* matched_text) const; 56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Returns true if |text| is the first name. 58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool IsFirstName(const string16& text) const; 59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Returns true if |text| is the middle name. 61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool IsMiddleName(const string16& text) const; 62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Returns true if |text| is the last name. 64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool IsLastName(const string16& text) const; 65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Returns true if |text| is the suffix. 67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool IsSuffix(const string16& text) const; 68c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Returns true if |text| is the middle initial. 70c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool IsMiddleInitial(const string16& text) const; 71c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 72c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Returns true if |text| is the last name. 73c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool IsFullName(const string16& text) const; 74c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 75c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Returns true if all of the tokens in |text| match the tokens in 76c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // |name_tokens|. 77c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool IsNameMatch(const string16& text, const NameTokens& name_tokens) const; 78c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 79c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Returns true if |word| is one of the tokens in |name_tokens|. 80c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool IsWordInName(const string16& word, const NameTokens& name_tokens) const; 81c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 82c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Sets |first_| to |first| and |first_tokens_| to the set of tokens in 83c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // |first|, made lowercase. 84c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void SetFirst(const string16& first); 85c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 86c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Sets |middle_| to |middle| and |middle_tokens_| to the set of tokens in 87c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // |middle|, made lowercase. 88c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void SetMiddle(const string16& middle); 89c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 90c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Sets |last_| to |last| and |last_tokens_| to the set of tokens in |last|, 91c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // made lowercase. 92c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void SetLast(const string16& last); 93c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 94c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Sets |first_|, |middle_|, |last_| and |*_tokens_| to the tokenized 95c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // |full|. It is tokenized on a space only. 96c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void SetFullName(const string16& full); 97c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 98c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void set_suffix(const string16& suffix) { suffix_ = suffix; } 99c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 100c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // List of tokens in each part of the name. 101c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch NameTokens first_tokens_; 102c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch NameTokens middle_tokens_; 103c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch NameTokens last_tokens_; 104c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 105c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Contact information data. 106c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch string16 first_; 107c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch string16 middle_; 108c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch string16 last_; 109c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch string16 suffix_; 110c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch string16 email_; 111c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch string16 company_name_; 112c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 113c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 114c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif // CHROME_BROWSER_AUTOFILL_CONTACT_INFO_H_ 115