| Index: chrome/browser/ui/autofill/autofill_dialog_i18n_input.cc
|
| diff --git a/chrome/browser/ui/autofill/autofill_dialog_i18n_input.cc b/chrome/browser/ui/autofill/autofill_dialog_i18n_input.cc
|
| index 6e2f5fbc4dd3a6611c3f2ca3ffaf4a17b3c3a4b3..fdc758e6071c9469c74d9a617f337061f7f33240 100644
|
| --- a/chrome/browser/ui/autofill/autofill_dialog_i18n_input.cc
|
| +++ b/chrome/browser/ui/autofill/autofill_dialog_i18n_input.cc
|
| @@ -5,12 +5,14 @@
|
| #include "chrome/browser/ui/autofill/autofill_dialog_i18n_input.h"
|
|
|
| #include "base/command_line.h"
|
| +#include "base/strings/string_split.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| #include "chrome/common/chrome_switches.h"
|
| #include "components/autofill/core/browser/autofill_profile.h"
|
| #include "components/autofill/core/browser/credit_card.h"
|
| #include "components/autofill/core/browser/field_types.h"
|
| #include "grit/component_strings.h"
|
| +#include "third_party/libaddressinput/chromium/cpp/include/libaddressinput/address_data.h"
|
| #include "third_party/libaddressinput/chromium/cpp/include/libaddressinput/address_field.h"
|
| #include "third_party/libaddressinput/chromium/cpp/include/libaddressinput/address_ui.h"
|
| #include "third_party/libaddressinput/chromium/cpp/include/libaddressinput/address_ui_component.h"
|
| @@ -21,36 +23,11 @@ namespace i18ninput {
|
|
|
| namespace {
|
|
|
| +using base::UTF16ToUTF8;
|
| +using ::i18n::addressinput::AddressData;
|
| using ::i18n::addressinput::AddressField;
|
| using ::i18n::addressinput::AddressUiComponent;
|
|
|
| -ServerFieldType AddressFieldToServerFieldType(AddressField address_field,
|
| - bool billing) {
|
| - switch (address_field) {
|
| - case ::i18n::addressinput::COUNTRY:
|
| - return billing ? ADDRESS_BILLING_COUNTRY : ADDRESS_HOME_COUNTRY;
|
| - case ::i18n::addressinput::ADMIN_AREA:
|
| - return billing ? ADDRESS_BILLING_STATE : ADDRESS_HOME_STATE;
|
| - case ::i18n::addressinput::LOCALITY:
|
| - return billing ? ADDRESS_BILLING_CITY : ADDRESS_HOME_CITY;
|
| - case ::i18n::addressinput::DEPENDENT_LOCALITY:
|
| - return billing ? ADDRESS_BILLING_DEPENDENT_LOCALITY :
|
| - ADDRESS_HOME_DEPENDENT_LOCALITY;
|
| - case ::i18n::addressinput::POSTAL_CODE:
|
| - return billing ? ADDRESS_BILLING_ZIP : ADDRESS_HOME_ZIP;
|
| - case ::i18n::addressinput::SORTING_CODE:
|
| - return billing ? ADDRESS_BILLING_SORTING_CODE : ADDRESS_HOME_SORTING_CODE;
|
| - case ::i18n::addressinput::STREET_ADDRESS:
|
| - return billing ? ADDRESS_BILLING_LINE1 : ADDRESS_HOME_LINE1;
|
| - case ::i18n::addressinput::RECIPIENT:
|
| - return billing ? NAME_BILLING_FULL : NAME_FULL;
|
| - case ::i18n::addressinput::ORGANIZATION:
|
| - return COMPANY_NAME;
|
| - }
|
| - NOTREACHED();
|
| - return UNKNOWN_TYPE;
|
| -}
|
| -
|
| DetailInput::Length LengthFromHint(AddressUiComponent::LengthHint hint) {
|
| if (hint == AddressUiComponent::HINT_SHORT)
|
| return DetailInput::SHORT;
|
| @@ -80,8 +57,7 @@ void BuildAddressInputs(common::AddressType address_type,
|
| continue;
|
| }
|
|
|
| - ServerFieldType server_type = AddressFieldToServerFieldType(component.field,
|
| - billing);
|
| + ServerFieldType server_type = TypeForField(component.field, address_type);
|
| DetailInput::Length length = LengthFromHint(component.length_hint);
|
| base::string16 placeholder = l10n_util::GetStringUTF16(component.name_id);
|
| DetailInput input = { length, server_type, placeholder };
|
| @@ -137,7 +113,7 @@ bool AddressHasCompleteAndVerifiedData(const AutofillProfile& profile) {
|
|
|
| for (size_t i = 0; i < required_fields.size(); ++i) {
|
| ServerFieldType type =
|
| - AddressFieldToServerFieldType(required_fields[i], false);
|
| + TypeForField(required_fields[i], common::ADDRESS_TYPE_SHIPPING);
|
| if (profile.GetRawInfo(type).empty())
|
| return false;
|
| }
|
| @@ -156,5 +132,56 @@ bool AddressHasCompleteAndVerifiedData(const AutofillProfile& profile) {
|
| return true;
|
| }
|
|
|
| +ServerFieldType TypeForField(AddressField address_field,
|
| + common::AddressType address_type) {
|
| + bool billing = address_type == common::ADDRESS_TYPE_BILLING;
|
| + switch (address_field) {
|
| + case ::i18n::addressinput::COUNTRY:
|
| + return billing ? ADDRESS_BILLING_COUNTRY : ADDRESS_HOME_COUNTRY;
|
| + case ::i18n::addressinput::ADMIN_AREA:
|
| + return billing ? ADDRESS_BILLING_STATE : ADDRESS_HOME_STATE;
|
| + case ::i18n::addressinput::LOCALITY:
|
| + return billing ? ADDRESS_BILLING_CITY : ADDRESS_HOME_CITY;
|
| + case ::i18n::addressinput::DEPENDENT_LOCALITY:
|
| + return billing ? ADDRESS_BILLING_DEPENDENT_LOCALITY :
|
| + ADDRESS_HOME_DEPENDENT_LOCALITY;
|
| + case ::i18n::addressinput::POSTAL_CODE:
|
| + return billing ? ADDRESS_BILLING_ZIP : ADDRESS_HOME_ZIP;
|
| + case ::i18n::addressinput::SORTING_CODE:
|
| + return billing ? ADDRESS_BILLING_SORTING_CODE : ADDRESS_HOME_SORTING_CODE;
|
| + case ::i18n::addressinput::STREET_ADDRESS:
|
| + return billing ? ADDRESS_BILLING_LINE1 : ADDRESS_HOME_LINE1;
|
| + case ::i18n::addressinput::RECIPIENT:
|
| + return billing ? NAME_BILLING_FULL : NAME_FULL;
|
| + case ::i18n::addressinput::ORGANIZATION:
|
| + return COMPANY_NAME;
|
| + }
|
| + NOTREACHED();
|
| + return UNKNOWN_TYPE;
|
| +}
|
| +
|
| +void CreateAddressData(
|
| + const base::Callback<base::string16(const AutofillType&)>& get_info,
|
| + AddressData* address_data) {
|
| + address_data->recipient = UTF16ToUTF8(get_info.Run(AutofillType(NAME_FULL)));
|
| + address_data->country_code = UTF16ToUTF8(
|
| + get_info.Run(AutofillType(HTML_TYPE_COUNTRY_CODE, HTML_MODE_SHIPPING)));
|
| + DCHECK_EQ(2U, address_data->country_code.size());
|
| + address_data->administrative_area = UTF16ToUTF8(
|
| + get_info.Run(AutofillType(ADDRESS_HOME_STATE)));
|
| + address_data->locality = UTF16ToUTF8(
|
| + get_info.Run(AutofillType(ADDRESS_HOME_CITY)));
|
| + address_data->dependent_locality = UTF16ToUTF8(
|
| + get_info.Run(AutofillType(ADDRESS_HOME_DEPENDENT_LOCALITY)));
|
| + address_data->sorting_code = UTF16ToUTF8(
|
| + get_info.Run(AutofillType(ADDRESS_HOME_SORTING_CODE)));
|
| + address_data->postal_code = UTF16ToUTF8(
|
| + get_info.Run(AutofillType(ADDRESS_HOME_ZIP)));
|
| + base::SplitString(
|
| + UTF16ToUTF8(get_info.Run(AutofillType(ADDRESS_HOME_STREET_ADDRESS))),
|
| + '\n',
|
| + &address_data->address_lines);
|
| +}
|
| +
|
| } // namespace i18ninput
|
| } // namespace autofill
|
|
|