1dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// Use of this source code is governed by a BSD-style license that can be
3dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// found in the LICENSE file.
4dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
5dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#ifndef CHROME_BROWSER_AUTOFILL_AUTOFILL_COUNTRY_H_
6dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#define CHROME_BROWSER_AUTOFILL_AUTOFILL_COUNTRY_H_
7dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#pragma once
8dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
9dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include <string>
10dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include <vector>
11dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
12dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "base/basictypes.h"
13dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "base/string16.h"
14dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
15dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// Stores data associated with a country. Strings are localized to the app
16dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// locale.
17dc0f95d653279beabeb9817299e2902918ba123eKristian Monsenclass AutofillCountry {
18dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen public:
19dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  // Returns country data corresponding to the two-letter ISO code
20dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  // |country_code|.
21dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  AutofillCountry(const std::string& country_code, const std::string& locale);
22dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  ~AutofillCountry();
23dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
24dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  // Fills |country_codes| with a list of the available countries' codes.
25dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  static void GetAvailableCountries(
26dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      std::vector<std::string>* country_codes);
27dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
28dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  // Returns the likely country code for |locale|, or "US" as a fallback if no
29dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  // mapping from the locale is available.
30dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  static const std::string CountryCodeForLocale(const std::string& locale);
31dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
32dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  // Returns the country code corresponding to |country|, which should be a
33ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // country code or country name localized to |locale|.  This function can
34ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // be expensive so use judiciously.
35dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  static const std::string GetCountryCode(const string16& country,
36dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen                                          const std::string& locale);
37dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
38dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  // Returns the application locale.
39dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  static const std::string ApplicationLocale();
40dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
41dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  const std::string country_code() const { return country_code_; }
42dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  const string16 name() const { return name_; }
43dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  const string16 postal_code_label() const { return postal_code_label_; }
44dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  const string16 state_label() const { return state_label_; }
45dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
46dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen private:
47dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  AutofillCountry(const std::string& country_code,
48dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen                  const string16& name,
49dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen                  const string16& postal_code_label,
50dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen                  const string16& state_label);
51dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
52dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  // The two-letter ISO-3166 country code.
53dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  std::string country_code_;
54dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
55dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  // The country's name, localized to the app locale.
56dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  string16 name_;
57dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
58dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  // The localized label for the postal code (or zip code) field.
59dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  string16 postal_code_label_;
60dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
61dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  // The localized label for the state (or province, district, etc.) field.
62dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  string16 state_label_;
63dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
64dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  DISALLOW_COPY_AND_ASSIGN(AutofillCountry);
65dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen};
66dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
67dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#endif  // CHROME_BROWSER_AUTOFILL_AUTOFILL_COUNTRY_H_
68