1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// found in the LICENSE file.
4cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_ADDRESS_I18N_H_
6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#define COMPONENTS_AUTOFILL_CORE_BROWSER_ADDRESS_I18N_H_
7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "base/callback_forward.h"
9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "base/memory/scoped_ptr.h"
10cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "base/strings/string16.h"
11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "components/autofill/core/browser/field_types.h"
12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "third_party/libaddressinput/src/cpp/include/libaddressinput/address_field.h"
13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace i18n {
15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace addressinput {
16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)struct AddressData;
17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
18cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace autofill {
21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class AutofillProfile;
23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class AutofillType;
24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace i18n {
26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Creates an AddressData object for internationalized address display or
28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// validation using |get_info| for field values.
29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)scoped_ptr< ::i18n::addressinput::AddressData> CreateAddressData(
30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    const base::Callback<base::string16(const AutofillType&)>& get_info);
31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Creates an |AddressData| from |profile|.
33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)scoped_ptr< ::i18n::addressinput::AddressData>
34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    CreateAddressDataFromAutofillProfile(const AutofillProfile& profile,
35cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                                         const std::string& app_locale);
36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Returns the corresponding Autofill server type for |field|.
38116680a4aac90f2aa7413d9095a592090648e557Ben MurdochServerFieldType TypeForField(::i18n::addressinput::AddressField field,
39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                             bool billing);
40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Sets |field| to the corresponding address field for the Autofill
42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// |server_type|. Returns |true| if |server_type| can be represented as an
43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// address field. The |field| parameter can be NULL.
44116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbool FieldForType(ServerFieldType server_type,
45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                  ::i18n::addressinput::AddressField* field);
46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
47cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}  // namespace i18n
48cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}  // namespace autofill
49cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
50cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#endif  // COMPONENTS_AUTOFILL_CORE_BROWSER_ADDRESS_I18N_H_
51