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