• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef CHROME_BROWSER_AUTOFILL_ADDRESS_H_
6 #define CHROME_BROWSER_AUTOFILL_ADDRESS_H_
7 #pragma once
8 
9 #include <string>
10 #include <vector>
11 
12 #include "base/string16.h"
13 #include "chrome/browser/autofill/autofill_type.h"
14 #include "chrome/browser/autofill/field_types.h"
15 #include "chrome/browser/autofill/form_group.h"
16 
17 // A form group that stores address information.
18 class Address : public FormGroup {
19  public:
20   Address();
21   Address(const Address& address);
22   virtual ~Address();
23 
24   Address& operator=(const Address& address);
25 
26   // FormGroup:
27   virtual void GetPossibleFieldTypes(const string16& text,
28                                      FieldTypeSet* possible_types) const;
29   virtual void GetAvailableFieldTypes(FieldTypeSet* available_types) const;
30   virtual string16 GetInfo(AutofillFieldType type) const;
31   virtual void SetInfo(AutofillFieldType type, const string16& value);
32 
country_code()33   const std::string& country_code() const { return country_code_; }
set_country_code(const std::string & country_code)34   void set_country_code(const std::string& country_code) {
35     country_code_ = country_code;
36   }
37 
38   // Sets all of the fields to the empty string.
39   void Clear();
40 
41  private:
42   // Vector of tokens in an address line.
43   typedef std::vector<string16> LineTokens;
44 
45   // Returns the localized country name corresponding to |country_code_|.
46   string16 Country() const;
47 
48   void set_line1(const string16& line1);
49   void set_line2(const string16& line2);
50 
51   // Sets the |country_code_| based on |country|, which should be a localized
52   // country name.
53   void SetCountry(const string16& country);
54 
55   // The following functions match |text| against the various values of the
56   // address, returning true on match.
57   virtual bool IsLine1(const string16& text) const;
58   virtual bool IsLine2(const string16& text) const;
59   virtual bool IsCity(const string16& text) const;
60   virtual bool IsState(const string16& text) const;
61   virtual bool IsCountry(const string16& text) const;
62   virtual bool IsZipCode(const string16& text) const;
63 
64   // Returns true if all of the tokens in |text| match the tokens in
65   // |line_tokens|.
66   bool IsLineMatch(const string16& text, const LineTokens& line_tokens) const;
67 
68   // Returns true if |word| is one of the tokens in |line_tokens|.
69   bool IsWordInLine(const string16& word, const LineTokens& line_tokens) const;
70 
71   // List of tokens in each part of |line1_| and |line2_|.
72   LineTokens line1_tokens_;
73   LineTokens line2_tokens_;
74 
75   // The address.
76   string16 line1_;
77   string16 line2_;
78   string16 city_;
79   string16 state_;
80   std::string country_code_;
81   string16 zip_code_;
82 };
83 
84 #endif  // CHROME_BROWSER_AUTOFILL_ADDRESS_H_
85