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

Unified Diff: chrome/browser/ui/autofill/autofill_dialog_common.cc

Issue 63053003: Ask libaddressinput for address components to use in requestAutocomplete(). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 7 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/autofill/autofill_dialog_common.cc
diff --git a/chrome/browser/ui/autofill/autofill_dialog_common.cc b/chrome/browser/ui/autofill/autofill_dialog_common.cc
index 4391a6b0d18d94711069617aaa590d3ce8457c76..4c558d7f11cfc6ba47d16a893f8165d3d89d3f1f 100644
--- a/chrome/browser/ui/autofill/autofill_dialog_common.cc
+++ b/chrome/browser/ui/autofill/autofill_dialog_common.cc
@@ -5,6 +5,7 @@
#include "chrome/browser/ui/autofill/autofill_dialog_common.h"
#include "chrome/browser/browser_process.h"
+#include "chrome/browser/ui/autofill/autofill_dialog_i18n_input.h"
#include "components/autofill/core/browser/autofill_country.h"
#include "components/autofill/core/browser/autofill_field.h"
#include "components/autofill/core/browser/autofill_type.h"
@@ -17,6 +18,14 @@
namespace autofill {
namespace common {
+namespace {
+
+const std::string& GetLocale() {
+ return g_browser_process->GetApplicationLocale();
+}
+
+} // namespace
+
// Returns true if |input| should be shown when |field_type| has been requested.
bool InputTypeMatchesFieldType(const DetailInput& input,
const AutofillType& field_type) {
@@ -71,9 +80,9 @@ void BuildInputs(const DetailInput* input_template,
}
}
-// Constructs |inputs| from template data for a given |dialog_section|.
void BuildInputsForSection(DialogSection dialog_section,
- DetailInputs* inputs) {
+ DetailInputs* inputs,
+ const std::string& country_region) {
const DetailInput kCCInputs[] = {
{ 1, CREDIT_CARD_NUMBER, IDS_AUTOFILL_DIALOG_PLACEHOLDER_CARD_NUMBER },
{ 2, CREDIT_CARD_EXP_MONTH, IDS_AUTOFILL_DIALOG_PLACEHOLDER_EXPIRY_MONTH },
@@ -83,6 +92,7 @@ void BuildInputsForSection(DialogSection dialog_section,
1.5 },
};
+ const int kBillingInputsStartRow = 3;
const DetailInput kBillingInputs[] = {
{ 3, NAME_BILLING_FULL, IDS_AUTOFILL_DIALOG_PLACEHOLDER_CARDHOLDER_NAME },
{ 4, ADDRESS_BILLING_LINE1,
@@ -91,29 +101,32 @@ void BuildInputsForSection(DialogSection dialog_section,
IDS_AUTOFILL_DIALOG_PLACEHOLDER_ADDRESS_LINE_2 },
{ 6, ADDRESS_BILLING_CITY,
IDS_AUTOFILL_DIALOG_PLACEHOLDER_LOCALITY },
- // TODO(estade): state placeholder should depend on locale.
{ 7, ADDRESS_BILLING_STATE, IDS_AUTOFILL_FIELD_LABEL_STATE },
{ 7, ADDRESS_BILLING_ZIP,
IDS_AUTOFILL_DIALOG_PLACEHOLDER_POSTAL_CODE },
- // We don't allow the user to change the country: http://crbug.com/247518
- { -1, ADDRESS_BILLING_COUNTRY, 0 },
- { 9, PHONE_BILLING_WHOLE_NUMBER,
+ };
+
+ const DetailInput kBillingPhoneInputs[] = {
+ { 19, PHONE_BILLING_WHOLE_NUMBER,
IDS_AUTOFILL_DIALOG_PLACEHOLDER_PHONE_NUMBER },
};
const DetailInput kEmailInputs[] = {
- { 10, EMAIL_ADDRESS, IDS_AUTOFILL_DIALOG_PLACEHOLDER_EMAIL },
+ { 20, EMAIL_ADDRESS, IDS_AUTOFILL_DIALOG_PLACEHOLDER_EMAIL },
};
+ const int kShippingInputsStartRow = 21;
const DetailInput kShippingInputs[] = {
- { 11, NAME_FULL, IDS_AUTOFILL_DIALOG_PLACEHOLDER_ADDRESSEE_NAME },
- { 12, ADDRESS_HOME_LINE1, IDS_AUTOFILL_DIALOG_PLACEHOLDER_ADDRESS_LINE_1 },
- { 13, ADDRESS_HOME_LINE2, IDS_AUTOFILL_DIALOG_PLACEHOLDER_ADDRESS_LINE_2 },
- { 14, ADDRESS_HOME_CITY, IDS_AUTOFILL_DIALOG_PLACEHOLDER_LOCALITY },
- { 15, ADDRESS_HOME_STATE, IDS_AUTOFILL_FIELD_LABEL_STATE },
- { 15, ADDRESS_HOME_ZIP, IDS_AUTOFILL_DIALOG_PLACEHOLDER_POSTAL_CODE },
- { -1, ADDRESS_HOME_COUNTRY, 0 },
- { 17, PHONE_HOME_WHOLE_NUMBER,
+ { 21, NAME_FULL, IDS_AUTOFILL_DIALOG_PLACEHOLDER_ADDRESSEE_NAME },
+ { 22, ADDRESS_HOME_LINE1, IDS_AUTOFILL_DIALOG_PLACEHOLDER_ADDRESS_LINE_1 },
+ { 23, ADDRESS_HOME_LINE2, IDS_AUTOFILL_DIALOG_PLACEHOLDER_ADDRESS_LINE_2 },
+ { 24, ADDRESS_HOME_CITY, IDS_AUTOFILL_DIALOG_PLACEHOLDER_LOCALITY },
+ { 25, ADDRESS_HOME_STATE, IDS_AUTOFILL_FIELD_LABEL_STATE },
+ { 25, ADDRESS_HOME_ZIP, IDS_AUTOFILL_DIALOG_PLACEHOLDER_POSTAL_CODE },
+ };
+
+ const DetailInput kShippingPhoneInputs[] = {
+ { 37, PHONE_HOME_WHOLE_NUMBER,
IDS_AUTOFILL_DIALOG_PLACEHOLDER_PHONE_NUMBER },
};
@@ -123,17 +136,42 @@ void BuildInputsForSection(DialogSection dialog_section,
break;
case SECTION_BILLING:
- BuildInputs(kBillingInputs, arraysize(kBillingInputs), inputs);
+ if (i18ninput::IsI18nAddressInputEnabled()) {
+ i18ninput::BuildI18nInputs(i18ninput::ADDRESS_TYPE_BILLING,
+ country_region,
+ kBillingInputsStartRow,
+ inputs);
+ } else {
+ BuildInputs(kBillingInputs, arraysize(kBillingInputs), inputs);
+ }
+ BuildInputs(kBillingPhoneInputs, arraysize(kBillingPhoneInputs), inputs);
BuildInputs(kEmailInputs, arraysize(kEmailInputs), inputs);
break;
case SECTION_CC_BILLING:
BuildInputs(kCCInputs, arraysize(kCCInputs), inputs);
- BuildInputs(kBillingInputs, arraysize(kBillingInputs), inputs);
+ if (i18ninput::IsI18nAddressInputEnabled()) {
+ i18ninput::BuildI18nInputs(i18ninput::ADDRESS_TYPE_BILLING,
+ country_region,
+ kBillingInputsStartRow,
+ inputs);
+ } else {
+ BuildInputs(kBillingInputs, arraysize(kBillingInputs), inputs);
+ }
+ BuildInputs(kBillingPhoneInputs, arraysize(kBillingPhoneInputs), inputs);
break;
case SECTION_SHIPPING:
- BuildInputs(kShippingInputs, arraysize(kShippingInputs), inputs);
+ if (i18ninput::IsI18nAddressInputEnabled()) {
+ i18ninput::BuildI18nInputs(i18ninput::ADDRESS_TYPE_SHIPPING,
+ country_region,
+ kShippingInputsStartRow,
+ inputs);
+ } else {
+ BuildInputs(kShippingInputs, arraysize(kShippingInputs), inputs);
+ }
+ BuildInputs(
+ kShippingPhoneInputs, arraysize(kShippingPhoneInputs), inputs);
break;
}
}
@@ -178,13 +216,19 @@ AutofillMetrics::DialogUiEvent DialogSectionToUiSelectionChangedEvent(
return AutofillMetrics::NUM_DIALOG_UI_EVENTS;
}
-string16 GetHardcodedValueForType(ServerFieldType type) {
- if (AutofillType(type).GetStorableType() == ADDRESS_HOME_COUNTRY) {
- AutofillCountry country("US", g_browser_process->GetApplicationLocale());
- return country.name();
- }
+base::string16 GetInitialValueForType(ServerFieldType type,
+ const std::string& country_code) {
+ if (AutofillType(type).GetStorableType() == ADDRESS_HOME_COUNTRY)
+ return GetCountryName(country_code);
+ return base::string16();
+}
+
+base::string16 GetCountryName(const std::string& country_code) {
+ return AutofillCountry(country_code, GetLocale()).name();
+}
- return string16();
+std::string GetCountryCode(const base::string16& country_name) {
Evan Stade 2013/11/25 19:52:06 I don't think these 2 functions are particularly n
Dan Beam 2013/11/28 02:52:45 Done.
+ return AutofillCountry::GetCountryCode(country_name, GetLocale());
}
} // namespace common

Powered by Google App Engine
This is Rietveld 408576698