| Index: chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc
|
| diff --git a/chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc b/chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc
|
| index 06371a5aa90bcf5b68d5b061f3fb976841e29475..1f73d3231aed221101bd7fe5a81d568466603c58 100644
|
| --- a/chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc
|
| +++ b/chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc
|
| @@ -115,19 +115,23 @@ bool InputTypeMatchesFieldType(const DetailInput& input,
|
| const AutofillType& field_type) {
|
| // If any credit card expiration info is asked for, show both month and year
|
| // inputs.
|
| - if (field_type.native_type() == CREDIT_CARD_EXP_4_DIGIT_YEAR ||
|
| - field_type.native_type() == CREDIT_CARD_EXP_2_DIGIT_YEAR ||
|
| - field_type.native_type() == CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR ||
|
| - field_type.native_type() == CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR ||
|
| - field_type.native_type() == CREDIT_CARD_EXP_MONTH) {
|
| + NativeFieldType native_type = field_type.GetEquivalentNativeType();
|
| + if (native_type == CREDIT_CARD_EXP_4_DIGIT_YEAR ||
|
| + native_type == CREDIT_CARD_EXP_2_DIGIT_YEAR ||
|
| + native_type == CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR ||
|
| + native_type == CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR ||
|
| + native_type == CREDIT_CARD_EXP_MONTH) {
|
| return input.type == CREDIT_CARD_EXP_4_DIGIT_YEAR ||
|
| input.type == CREDIT_CARD_EXP_MONTH;
|
| }
|
|
|
| - if (field_type.native_type() == CREDIT_CARD_TYPE)
|
| + if (native_type == CREDIT_CARD_TYPE)
|
| return input.type == CREDIT_CARD_NUMBER;
|
|
|
| - return input.type == field_type.native_type();
|
| + // Check the groups to distinguish billing types from shipping ones.
|
| + AutofillType input_type = AutofillType(input.type);
|
| + return input_type.GetEquivalentNativeType() == native_type &&
|
| + input_type.group() == field_type.group();
|
| }
|
|
|
| // Returns true if |input| in the given |section| should be used for a
|
| @@ -138,7 +142,7 @@ bool DetailInputMatchesField(DialogSection section,
|
| AutofillType field_type = field.Type();
|
|
|
| // The credit card name is filled from the billing section's data.
|
| - if (field_type.native_type() == CREDIT_CARD_NAME &&
|
| + if (field_type.GetEquivalentNativeType() == CREDIT_CARD_NAME &&
|
| (section == SECTION_BILLING || section == SECTION_CC_BILLING)) {
|
| return input.type == NAME_BILLING_FULL;
|
| }
|
| @@ -158,7 +162,8 @@ bool DetailInputMatchesShippingField(const DetailInput& input,
|
| // Equivalent billing field type is used to support UseBillingAsShipping
|
| // usecase.
|
| NativeFieldType field_type =
|
| - AutofillType::GetEquivalentBillingFieldType(field.Type().native_type());
|
| + AutofillType::GetEquivalentBillingFieldType(
|
| + field.Type().GetEquivalentNativeType());
|
|
|
| return InputTypeMatchesFieldType(input, AutofillType(field_type));
|
| }
|
| @@ -534,7 +539,7 @@ void AutofillDialogControllerImpl::Show() {
|
| bool has_types = false;
|
| bool has_sections = false;
|
| form_structure_.ParseFieldTypesFromAutocompleteAttributes(
|
| - FormStructure::PARSE_FOR_AUTOFILL_DIALOG, &has_types, &has_sections);
|
| + &has_types, &has_sections);
|
|
|
| // Fail if the author didn't specify autocomplete types.
|
| if (!has_types) {
|
| @@ -1198,7 +1203,7 @@ const DetailInputs& AutofillDialogControllerImpl::RequestedFieldsForSection(
|
|
|
| ui::ComboboxModel* AutofillDialogControllerImpl::ComboboxModelForAutofillType(
|
| NativeFieldType type) {
|
| - switch (AutofillType::GetEquivalentFieldType(type)) {
|
| + switch (type) {
|
| case CREDIT_CARD_EXP_MONTH:
|
| return &cc_exp_month_combobox_model_;
|
|
|
| @@ -1206,6 +1211,7 @@ ui::ComboboxModel* AutofillDialogControllerImpl::ComboboxModelForAutofillType(
|
| return &cc_exp_year_combobox_model_;
|
|
|
| case ADDRESS_HOME_COUNTRY:
|
| + case ADDRESS_BILLING_COUNTRY:
|
| return &country_combobox_model_;
|
|
|
| default:
|
| @@ -1569,7 +1575,7 @@ string16 AutofillDialogControllerImpl::InputValidityMessage(
|
| }
|
| }
|
|
|
| - switch (AutofillType::GetEquivalentFieldType(type)) {
|
| + switch (AutofillType(type).GetEquivalentNativeType()) {
|
| case EMAIL_ADDRESS:
|
| if (!value.empty() && !IsValidEmailAddress(value)) {
|
| return l10n_util::GetStringUTF16(
|
| @@ -2322,7 +2328,8 @@ bool AutofillDialogControllerImpl::RequestingCreditCardInfo() const {
|
| DCHECK_GT(form_structure_.field_count(), 0U);
|
|
|
| for (size_t i = 0; i < form_structure_.field_count(); ++i) {
|
| - if (IsCreditCardType(form_structure_.field(i)->Type().native_type()))
|
| + AutofillType type = form_structure_.field(i)->Type();
|
| + if (IsCreditCardType(type.GetEquivalentNativeType()))
|
| return true;
|
| }
|
|
|
| @@ -2787,7 +2794,8 @@ bool AutofillDialogControllerImpl::FormStructureCaresAboutSection(
|
| void AutofillDialogControllerImpl::SetCvcResult(const string16& cvc) {
|
| for (size_t i = 0; i < form_structure_.field_count(); ++i) {
|
| AutofillField* field = form_structure_.field(i);
|
| - if (field->Type().native_type() == CREDIT_CARD_VERIFICATION_CODE) {
|
| + if (field->Type().GetEquivalentNativeType() ==
|
| + CREDIT_CARD_VERIFICATION_CODE) {
|
| field->value = cvc;
|
| break;
|
| }
|
|
|