| // Copyright 2013 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_ADDRESS_H_ |
| #define COMPONENTS_AUTOFILL_CORE_BROWSER_ADDRESS_H_ |
| |
| #include <string> |
| #include <vector> |
| |
| #include "base/compiler_specific.h" |
| #include "base/strings/string16.h" |
| #include "components/autofill/core/browser/form_group.h" |
| |
| namespace autofill { |
| |
| // A form group that stores address information. |
| class Address : public FormGroup { |
| public: |
| Address(); |
| Address(const Address& address); |
| ~Address() override; |
| |
| Address& operator=(const Address& address); |
| bool operator==(const Address& other) const; |
| bool operator!=(const Address& other) const { return !operator==(other); } |
| |
| // FormGroup: |
| base::string16 GetRawInfo(ServerFieldType type) const override; |
| void SetRawInfo(ServerFieldType type, const base::string16& value) override; |
| |
| void GetMatchingTypes(const base::string16& text, |
| const std::string& app_locale, |
| ServerFieldTypeSet* matching_types) const override; |
| |
| private: |
| // FormGroup: |
| void GetSupportedTypes(ServerFieldTypeSet* supported_types) const override; |
| base::string16 GetInfoImpl(const AutofillType& type, |
| const std::string& app_locale) const override; |
| bool SetInfoImpl(const AutofillType& type, |
| const base::string16& value, |
| const std::string& app_locale) override; |
| |
| // Trims any trailing newlines from |street_address_|. |
| void TrimStreetAddress(); |
| |
| // The lines of the street address. |
| std::vector<base::string16> street_address_; |
| // A subdivision of city, e.g. inner-city district or suburb. |
| base::string16 dependent_locality_; |
| base::string16 city_; |
| base::string16 state_; |
| base::string16 zip_code_; |
| // Similar to a ZIP code, but used by entities that might not be |
| // geographically contiguous. The canonical example is CEDEX in France. |
| base::string16 sorting_code_; |
| |
| // The ISO 3166 2-letter country code, or an empty string if there is no |
| // country data specified for this address. |
| std::string country_code_; |
| }; |
| |
| } // namespace autofill |
| |
| #endif // COMPONENTS_AUTOFILL_CORE_BROWSER_ADDRESS_H_ |