1dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// Copyright (c) 2011 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_ 73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <vector> 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/gtest_prod_util.h" 12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/string16.h" 13ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/autofill/field_types.h" 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/autofill/form_group.h" 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 16ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// A form group that stores name information. 17ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass NameInfo : public FormGroup { 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 19ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen NameInfo(); 20ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen NameInfo(const NameInfo& info); 21ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual ~NameInfo(); 22ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 23ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen NameInfo& operator=(const NameInfo& info); 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 25ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // FormGroup: 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void GetPossibleFieldTypes(const string16& text, 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch FieldTypeSet* possible_types) const; 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void GetAvailableFieldTypes(FieldTypeSet* available_types) const; 29ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual string16 GetInfo(AutofillFieldType type) const; 30ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void SetInfo(AutofillFieldType type, const string16& value); 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private: 33ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen FRIEND_TEST_ALL_PREFIXES(NameInfoTest, TestSetFullName); 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 35ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Returns the full name, which can include up to the first, middle, and last 36ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // name. 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch string16 FullName() const; 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Returns the middle initial if |middle_| is non-empty. Returns an empty 40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // string otherwise. 41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch string16 MiddleInitial() const; 42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const string16& first() const { return first_; } 44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const string16& middle() const { return middle_; } 45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const string16& last() const { return last_; } 46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Returns true if |text| is the first name. 48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool IsFirstName(const string16& text) const; 49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Returns true if |text| is the middle name. 51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool IsMiddleName(const string16& text) const; 52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Returns true if |text| is the last name. 54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool IsLastName(const string16& text) const; 55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Returns true if |text| is the middle initial. 57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool IsMiddleInitial(const string16& text) const; 58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Returns true if |text| is the last name. 60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool IsFullName(const string16& text) const; 61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Returns true if all of the tokens in |text| match the tokens in 63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // |name_tokens|. 64ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen bool IsNameMatch(const string16& text, 65ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen const std::vector<string16>& name_tokens) const; 66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Returns true if |word| is one of the tokens in |name_tokens|. 68ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen bool IsWordInName(const string16& word, 69ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen const std::vector<string16>& name_tokens) const; 70c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 71c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Sets |first_| to |first| and |first_tokens_| to the set of tokens in 72c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // |first|, made lowercase. 73c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void SetFirst(const string16& first); 74c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 75c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Sets |middle_| to |middle| and |middle_tokens_| to the set of tokens in 76c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // |middle|, made lowercase. 77c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void SetMiddle(const string16& middle); 78c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 79c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Sets |last_| to |last| and |last_tokens_| to the set of tokens in |last|, 80c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // made lowercase. 81c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void SetLast(const string16& last); 82c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 83c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Sets |first_|, |middle_|, |last_| and |*_tokens_| to the tokenized 84c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // |full|. It is tokenized on a space only. 85c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void SetFullName(const string16& full); 86c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 87c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // List of tokens in each part of the name. 88ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen std::vector<string16> first_tokens_; 89ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen std::vector<string16> middle_tokens_; 90ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen std::vector<string16> last_tokens_; 91c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 92c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch string16 first_; 93c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch string16 middle_; 94c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch string16 last_; 95ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}; 96ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 97ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass EmailInfo : public FormGroup { 98ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen public: 99ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EmailInfo(); 100ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EmailInfo(const EmailInfo& info); 101ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual ~EmailInfo(); 102ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 103ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EmailInfo& operator=(const EmailInfo& info); 104ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 105ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // FormGroup: 106ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void GetPossibleFieldTypes(const string16& text, 107ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen FieldTypeSet* possible_types) const; 108ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void GetAvailableFieldTypes(FieldTypeSet* available_types) const; 109ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual string16 GetInfo(AutofillFieldType type) const; 110ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void SetInfo(AutofillFieldType type, const string16& value); 111ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 112ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen private: 113c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch string16 email_; 114ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}; 115ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 116ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass CompanyInfo : public FormGroup { 117ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen public: 118ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen CompanyInfo(); 119ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen CompanyInfo(const CompanyInfo& info); 120ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual ~CompanyInfo(); 121ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 122ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen CompanyInfo& operator=(const CompanyInfo& info); 123ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 124ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // FormGroup: 125ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void GetPossibleFieldTypes(const string16& text, 126ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen FieldTypeSet* possible_types) const; 127ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void GetAvailableFieldTypes(FieldTypeSet* available_types) const; 128ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual string16 GetInfo(AutofillFieldType type) const; 129ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void SetInfo(AutofillFieldType type, const string16& value); 130ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 131ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen private: 132c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch string16 company_name_; 133c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 134c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 135c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif // CHROME_BROWSER_AUTOFILL_CONTACT_INFO_H_ 136