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_ADDRESS_H_ 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define CHROME_BROWSER_AUTOFILL_ADDRESS_H_ 73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 9dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include <string> 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <vector> 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/string16.h" 13ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/autofill/autofill_type.h" 14ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/autofill/field_types.h" 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/autofill/form_group.h" 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// A form group that stores address information. 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass Address : public FormGroup { 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 20731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick Address(); 21ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen Address(const Address& address); 22731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick virtual ~Address(); 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 24ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen Address& operator=(const Address& address); 25ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 26dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // FormGroup: 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void GetPossibleFieldTypes(const string16& text, 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch FieldTypeSet* possible_types) const; 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void GetAvailableFieldTypes(FieldTypeSet* available_types) const; 30ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual string16 GetInfo(AutofillFieldType type) const; 31ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void SetInfo(AutofillFieldType type, const string16& value); 32dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 33dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen const std::string& country_code() const { return country_code_; } 34dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen void set_country_code(const std::string& country_code) { 35dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen country_code_ = country_code; 36dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen } 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Sets all of the fields to the empty string. 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void Clear(); 40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private: 42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Vector of tokens in an address line. 43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch typedef std::vector<string16> LineTokens; 44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 45dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // Returns the localized country name corresponding to |country_code_|. 46dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen string16 Country() const; 47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void set_line1(const string16& line1); 49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void set_line2(const string16& line2); 50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 51dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // Sets the |country_code_| based on |country|, which should be a localized 52dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // country name. 53dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen void SetCountry(const string16& country); 54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // The following functions match |text| against the various values of the 56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // address, returning true on match. 57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual bool IsLine1(const string16& text) const; 58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual bool IsLine2(const string16& text) const; 59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual bool IsCity(const string16& text) const; 60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual bool IsState(const string16& text) const; 61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual bool IsCountry(const string16& text) const; 62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual bool IsZipCode(const string16& text) const; 63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Returns true if all of the tokens in |text| match the tokens in 65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // |line_tokens|. 66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool IsLineMatch(const string16& text, const LineTokens& line_tokens) const; 67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 68c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Returns true if |word| is one of the tokens in |line_tokens|. 69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool IsWordInLine(const string16& word, const LineTokens& line_tokens) const; 70c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 71c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // List of tokens in each part of |line1_| and |line2_|. 72c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch LineTokens line1_tokens_; 73c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch LineTokens line2_tokens_; 74c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 75c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // The address. 76c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch string16 line1_; 77c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch string16 line2_; 78c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch string16 city_; 79c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch string16 state_; 80dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen std::string country_code_; 81c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch string16 zip_code_; 82c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 83c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 84c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif // CHROME_BROWSER_AUTOFILL_ADDRESS_H_ 85