Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(67)

Side by Side Diff: chrome/browser/ui/autofill/autofill_dialog_input_i18n.cc

Issue 25620002: [rac] Use i18n address inputs with --enable-autofill-address-i18n flag (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/ui/autofill/autofill_dialog_input_i18n.h"
6
7 #include "chrome/browser/browser_process.h"
8 #include "chrome/browser/ui/autofill/autofill_dialog_common.h"
9 #include "grit/component_strings.h"
10 #include "grit/generated_resources.h"
11
12 namespace autofill {
13 namespace common {
14
15 namespace {
16
17 void GetLanguageAndCountryRegionFromApplicationLocale(
18 std::string* language,
19 std::string* country_region) {
20 DCHECK(g_browser_process);
21 const std::string& locale = g_browser_process->GetApplicationLocale();
22 *language = locale.substr(0, locale.find('-'));
23 if (!country_region)
24 return;
25 const size_t country_region_pos = language->length() + 1;
26 if (locale.length() <= country_region_pos) {
27 *country_region = "US";
28 return;
29 }
30 *country_region = locale.substr(country_region_pos);
31 }
32
33 } // namespace
34
35 AutofillDialogInputI18n::AutofillDialogInputI18n() {}
36
37 AutofillDialogInputI18n::~AutofillDialogInputI18n() {}
38
39 void AutofillDialogInputI18n::BuildInputsForSection(
40 DialogSection dialog_section,
41 DetailInputs* inputs) {
42 std::string language;
43 std::string country_region;
44 GetLanguageAndCountryRegionFromApplicationLocale(&language, &country_region);
45 BuildLocalizedInputs(dialog_section, language, country_region, inputs);
46 }
47
48 void AutofillDialogInputI18n::BuildInputsForSection(
49 DialogSection dialog_section,
50 const std::string& selected_country_region,
51 DetailInputs* inputs) {
52 std::string language;
53 GetLanguageAndCountryRegionFromApplicationLocale(&language, NULL);
54 BuildLocalizedInputs(
55 dialog_section, language, selected_country_region, inputs);
56 }
57
58 // static
59 ServerFieldType AutofillDialogInputI18n::GetFieldType(
Evan Stade 2013/10/02 00:57:19 AutofillType::GetEquivalentBillingFieldType
60 AddressType address_type,
61 ServerFieldType field_type) {
62 switch (field_type) {
63 case ADDRESS_HOME_LINE1:
64 return address_type == ADDRESS_TYPE_SHIPPING ? field_type
65 : ADDRESS_BILLING_LINE1;
66 case ADDRESS_HOME_LINE2:
67 return address_type == ADDRESS_TYPE_SHIPPING ? field_type
68 : ADDRESS_BILLING_LINE2;
69 case ADDRESS_HOME_CITY:
70 return address_type == ADDRESS_TYPE_SHIPPING ? field_type
71 : ADDRESS_BILLING_CITY;
72 case ADDRESS_HOME_STATE:
73 return address_type == ADDRESS_TYPE_SHIPPING ? field_type
74 : ADDRESS_BILLING_STATE;
75 case ADDRESS_HOME_ZIP:
76 return address_type == ADDRESS_TYPE_SHIPPING ? field_type
77 : ADDRESS_BILLING_ZIP;
78 case ADDRESS_HOME_COUNTRY:
79 return address_type == ADDRESS_TYPE_SHIPPING ? field_type
80 : ADDRESS_BILLING_COUNTRY;
81 default:
82 NOTREACHED();
83 return field_type;
84 }
85 }
86
87 void AutofillDialogInputI18n::BuildLocalizedInputs(
88 DialogSection dialog_section,
89 const std::string& language,
90 const std::string& country_region,
91 DetailInputs* inputs) {
92 if (dialog_section == SECTION_CC || dialog_section == SECTION_CC_BILLING)
93 ::autofill::common::BuildInputsForSection(SECTION_CC, inputs);
94
95 int field_row = 3;
96 if (dialog_section == SECTION_BILLING ||
97 dialog_section == SECTION_CC_BILLING) {
98 inputs->push_back({field_row++, NAME_BILLING_FULL,
99 IDS_AUTOFILL_DIALOG_PLACEHOLDER_CARDHOLDER_NAME});
100 field_row = BuildAddressInputs(
101 ADDRESS_TYPE_BILLING, field_row, language, country_region, inputs);
102 inputs->push_back({field_row++, PHONE_BILLING_WHOLE_NUMBER,
103 IDS_AUTOFILL_DIALOG_PLACEHOLDER_PHONE_NUMBER});
104 inputs->push_back(
105 {field_row++, EMAIL_ADDRESS, IDS_AUTOFILL_DIALOG_PLACEHOLDER_EMAIL});
106 }
107
108 if (dialog_section == SECTION_SHIPPING) {
109 inputs->push_back({field_row++, NAME_FULL,
110 IDS_AUTOFILL_DIALOG_PLACEHOLDER_ADDRESSEE_NAME});
111 field_row = BuildAddressInputs(
112 ADDRESS_TYPE_SHIPPING, field_row, language, country_region, inputs);
113 inputs->push_back({field_row++, PHONE_HOME_WHOLE_NUMBER,
114 IDS_AUTOFILL_DIALOG_PLACEHOLDER_PHONE_NUMBER});
115 }
116 }
117
118 int AutofillDialogInputI18n::BuildAddressInputs(
119 AddressType type,
120 int field_row,
121 const std::string& language,
122 const std::string& country_region,
123 DetailInputs* inputs) {
124 // Language and country/region parameters are ignored until libaddressinput is
125 // integrated.
126 inputs->push_back({field_row++, GetFieldType(type, ADDRESS_HOME_LINE1),
127 IDS_AUTOFILL_DIALOG_PLACEHOLDER_ADDRESS_LINE_1});
128 inputs->push_back({field_row++, GetFieldType(type, ADDRESS_HOME_LINE2),
129 IDS_AUTOFILL_DIALOG_PLACEHOLDER_ADDRESS_LINE_2});
130 inputs->push_back({field_row++, GetFieldType(type, ADDRESS_HOME_CITY),
131 IDS_AUTOFILL_DIALOG_PLACEHOLDER_LOCALITY});
132 inputs->push_back({field_row, GetFieldType(type, ADDRESS_HOME_STATE),
133 IDS_AUTOFILL_FIELD_LABEL_STATE});
134 inputs->push_back({field_row++, GetFieldType(type, ADDRESS_HOME_ZIP),
135 IDS_AUTOFILL_DIALOG_PLACEHOLDER_POSTAL_CODE});
136 inputs->push_back({field_row++, GetFieldType(type, ADDRESS_HOME_COUNTRY)});
137 return field_row;
138 }
139
140 } // namespace common
141 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698