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