contact_info.h revision 3240926e260ce088908e02ac07a6cf7b0c0cbf44
125e0d8f755736b0a17400adbdd367aee89fbecfcDaniel Dunbar// Copyright 2013 The Chromium Authors. All rights reserved.
225e0d8f755736b0a17400adbdd367aee89fbecfcDaniel Dunbar// Use of this source code is governed by a BSD-style license that can be
325e0d8f755736b0a17400adbdd367aee89fbecfcDaniel Dunbar// found in the LICENSE file.
425e0d8f755736b0a17400adbdd367aee89fbecfcDaniel Dunbar
525e0d8f755736b0a17400adbdd367aee89fbecfcDaniel Dunbar#ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_CONTACT_INFO_H_
625e0d8f755736b0a17400adbdd367aee89fbecfcDaniel Dunbar#define COMPONENTS_AUTOFILL_CORE_BROWSER_CONTACT_INFO_H_
725e0d8f755736b0a17400adbdd367aee89fbecfcDaniel Dunbar
825e0d8f755736b0a17400adbdd367aee89fbecfcDaniel Dunbar#include <vector>
9e18e0c58dcd740c64e962fefde44249d685d0568Chris Lattner
10e18e0c58dcd740c64e962fefde44249d685d0568Chris Lattner#include "base/compiler_specific.h"
11e18e0c58dcd740c64e962fefde44249d685d0568Chris Lattner#include "base/gtest_prod_util.h"
12e18e0c58dcd740c64e962fefde44249d685d0568Chris Lattner#include "base/strings/string16.h"
1325e0d8f755736b0a17400adbdd367aee89fbecfcDaniel Dunbar#include "components/autofill/core/browser/form_group.h"
1425e0d8f755736b0a17400adbdd367aee89fbecfcDaniel Dunbar
1525e0d8f755736b0a17400adbdd367aee89fbecfcDaniel Dunbarnamespace autofill {
1625e0d8f755736b0a17400adbdd367aee89fbecfcDaniel Dunbar
17255f89faee13dc491cb64fbeae3c763e7e2ea4e6Chandler Carruth// A form group that stores name information.
18255f89faee13dc491cb64fbeae3c763e7e2ea4e6Chandler Carruthclass NameInfo : public FormGroup {
1977afbdce53aa740777486b0cc4e9df151ae65468Jack Carter public:
20a5ad93a10a5435f21090b09edb6b3a7e44967648Chris Lattner  NameInfo();
2189b9372605db2ce3b0085c84089e389f7bc1fbddRafael Espindola  NameInfo(const NameInfo& info);
2236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  virtual ~NameInfo();
230855bc5b973320052c87bdcc2fa17b9711edc3deCharles Davis
24255f89faee13dc491cb64fbeae3c763e7e2ea4e6Chandler Carruth  NameInfo& operator=(const NameInfo& info);
25cddd236e8a5acb80e9a0e79dc63f6cfaa8205b86Daniel Dunbar
2684a2926fb7ab388d688a133b0b375a26e669fd55Daniel Dunbar  // FormGroup:
2725e0d8f755736b0a17400adbdd367aee89fbecfcDaniel Dunbar  virtual base::string16 GetRawInfo(ServerFieldType type) const OVERRIDE;
28baaefaf828beb3527a3554af99505822fd4dfabfBill Wendling  virtual void SetRawInfo(ServerFieldType type,
29baaefaf828beb3527a3554af99505822fd4dfabfBill Wendling                          const base::string16& value) OVERRIDE;
30baaefaf828beb3527a3554af99505822fd4dfabfBill Wendling
31baaefaf828beb3527a3554af99505822fd4dfabfBill Wendling private:
32baaefaf828beb3527a3554af99505822fd4dfabfBill Wendling  // FormGroup:
33baaefaf828beb3527a3554af99505822fd4dfabfBill Wendling  virtual void GetSupportedTypes(
34baaefaf828beb3527a3554af99505822fd4dfabfBill Wendling      ServerFieldTypeSet* supported_types) const OVERRIDE;
35320296a4cfe414ce59f406b8a5ce15272f563103Rafael Espindola
36baaefaf828beb3527a3554af99505822fd4dfabfBill Wendling  // Returns the full name, which can include up to the first, middle, and last
3736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  // name.
3836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  base::string16 FullName() const;
39baaefaf828beb3527a3554af99505822fd4dfabfBill Wendling
40baaefaf828beb3527a3554af99505822fd4dfabfBill Wendling  // Returns the middle initial if |middle_| is non-empty.  Returns an empty
41baaefaf828beb3527a3554af99505822fd4dfabfBill Wendling  // string otherwise.
42baaefaf828beb3527a3554af99505822fd4dfabfBill Wendling  base::string16 MiddleInitial() const;
4336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
44baaefaf828beb3527a3554af99505822fd4dfabfBill Wendling  const base::string16& first() const { return first_; }
45baaefaf828beb3527a3554af99505822fd4dfabfBill Wendling  const base::string16& middle() const { return middle_; }
46baaefaf828beb3527a3554af99505822fd4dfabfBill Wendling  const base::string16& last() const { return last_; }
47320296a4cfe414ce59f406b8a5ce15272f563103Rafael Espindola
48320296a4cfe414ce59f406b8a5ce15272f563103Rafael Espindola  // Sets |first_|, |middle_|, and |last_| to the tokenized |full|.
49320296a4cfe414ce59f406b8a5ce15272f563103Rafael Espindola  // It is tokenized on a space only.
50320296a4cfe414ce59f406b8a5ce15272f563103Rafael Espindola  void SetFullName(const base::string16& full);
51320296a4cfe414ce59f406b8a5ce15272f563103Rafael Espindola
52320296a4cfe414ce59f406b8a5ce15272f563103Rafael Espindola  base::string16 first_;
53320296a4cfe414ce59f406b8a5ce15272f563103Rafael Espindola  base::string16 middle_;
54320296a4cfe414ce59f406b8a5ce15272f563103Rafael Espindola  base::string16 last_;
55320296a4cfe414ce59f406b8a5ce15272f563103Rafael Espindola};
56320296a4cfe414ce59f406b8a5ce15272f563103Rafael Espindola
57320296a4cfe414ce59f406b8a5ce15272f563103Rafael Espindolaclass EmailInfo : public FormGroup {
58320296a4cfe414ce59f406b8a5ce15272f563103Rafael Espindola public:
59320296a4cfe414ce59f406b8a5ce15272f563103Rafael Espindola  EmailInfo();
60320296a4cfe414ce59f406b8a5ce15272f563103Rafael Espindola  EmailInfo(const EmailInfo& info);
61320296a4cfe414ce59f406b8a5ce15272f563103Rafael Espindola  virtual ~EmailInfo();
62320296a4cfe414ce59f406b8a5ce15272f563103Rafael Espindola
63320296a4cfe414ce59f406b8a5ce15272f563103Rafael Espindola  EmailInfo& operator=(const EmailInfo& info);
64320296a4cfe414ce59f406b8a5ce15272f563103Rafael Espindola
65320296a4cfe414ce59f406b8a5ce15272f563103Rafael Espindola  // FormGroup:
66320296a4cfe414ce59f406b8a5ce15272f563103Rafael Espindola  virtual base::string16 GetRawInfo(ServerFieldType type) const OVERRIDE;
67320296a4cfe414ce59f406b8a5ce15272f563103Rafael Espindola  virtual void SetRawInfo(ServerFieldType type,
68320296a4cfe414ce59f406b8a5ce15272f563103Rafael Espindola                          const base::string16& value) OVERRIDE;
69320296a4cfe414ce59f406b8a5ce15272f563103Rafael Espindola
70320296a4cfe414ce59f406b8a5ce15272f563103Rafael Espindola private:
71320296a4cfe414ce59f406b8a5ce15272f563103Rafael Espindola  // FormGroup:
72320296a4cfe414ce59f406b8a5ce15272f563103Rafael Espindola  virtual void GetSupportedTypes(
7336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines      ServerFieldTypeSet* supported_types) const OVERRIDE;
74320296a4cfe414ce59f406b8a5ce15272f563103Rafael Espindola
75320296a4cfe414ce59f406b8a5ce15272f563103Rafael Espindola  base::string16 email_;
7636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines};
77320296a4cfe414ce59f406b8a5ce15272f563103Rafael Espindola
7836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass CompanyInfo : public FormGroup {
7936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines public:
8036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  CompanyInfo();
8136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  CompanyInfo(const CompanyInfo& info);
8236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  virtual ~CompanyInfo();
8336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
8436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  CompanyInfo& operator=(const CompanyInfo& info);
8536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
8636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  // FormGroup:
87320296a4cfe414ce59f406b8a5ce15272f563103Rafael Espindola  virtual base::string16 GetRawInfo(ServerFieldType type) const OVERRIDE;
88320296a4cfe414ce59f406b8a5ce15272f563103Rafael Espindola  virtual void SetRawInfo(ServerFieldType type,
89320296a4cfe414ce59f406b8a5ce15272f563103Rafael Espindola                          const base::string16& value) OVERRIDE;
90320296a4cfe414ce59f406b8a5ce15272f563103Rafael Espindola
91320296a4cfe414ce59f406b8a5ce15272f563103Rafael Espindola private:
92320296a4cfe414ce59f406b8a5ce15272f563103Rafael Espindola  // FormGroup:
9336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  virtual void GetSupportedTypes(
9436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines      ServerFieldTypeSet* supported_types) const OVERRIDE;
9536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
9636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  base::string16 company_name_;
9736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines};
9836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
9936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines}  // namespace autofill
10036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
10136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines#endif  // COMPONENTS_AUTOFILL_CORE_BROWSER_CONTACT_INFO_H_
102320296a4cfe414ce59f406b8a5ce15272f563103Rafael Espindola