| 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 354dca518fb1f8250083147f381c754a6a06339a..2e0ea7f988430c38ddf6647a9bde42d6ad4c2d6c 100644
|
| --- a/chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc
|
| +++ b/chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc
|
| @@ -112,22 +112,22 @@ bool IsWalletSupportedCard(const std::string& card_type) {
|
|
|
| // Returns true if |input| should be shown when |field_type| has been requested.
|
| bool InputTypeMatchesFieldType(const DetailInput& input,
|
| - AutofillFieldType field_type) {
|
| + const AutofillType& field_type) {
|
| // If any credit card expiration info is asked for, show both month and year
|
| // inputs.
|
| - if (field_type == CREDIT_CARD_EXP_4_DIGIT_YEAR ||
|
| - field_type == CREDIT_CARD_EXP_2_DIGIT_YEAR ||
|
| - field_type == CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR ||
|
| - field_type == CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR ||
|
| - field_type == CREDIT_CARD_EXP_MONTH) {
|
| + if (field_type.server_type() == CREDIT_CARD_EXP_4_DIGIT_YEAR ||
|
| + field_type.server_type() == CREDIT_CARD_EXP_2_DIGIT_YEAR ||
|
| + field_type.server_type() == CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR ||
|
| + field_type.server_type() == CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR ||
|
| + field_type.server_type() == CREDIT_CARD_EXP_MONTH) {
|
| return input.type == CREDIT_CARD_EXP_4_DIGIT_YEAR ||
|
| input.type == CREDIT_CARD_EXP_MONTH;
|
| }
|
|
|
| - if (field_type == CREDIT_CARD_TYPE)
|
| + if (field_type.server_type() == CREDIT_CARD_TYPE)
|
| return input.type == CREDIT_CARD_NUMBER;
|
|
|
| - return input.type == field_type;
|
| + return input.type == field_type.server_type();
|
| }
|
|
|
| // Returns true if |input| in the given |section| should be used for a
|
| @@ -135,16 +135,18 @@ bool InputTypeMatchesFieldType(const DetailInput& input,
|
| bool DetailInputMatchesField(DialogSection section,
|
| const DetailInput& input,
|
| const AutofillField& field) {
|
| + AutofillType field_type = field.Type();
|
| +
|
| // The credit card name is filled from the billing section's data.
|
| - if (field.type() == CREDIT_CARD_NAME &&
|
| + if (field_type.server_type() == CREDIT_CARD_NAME &&
|
| (section == SECTION_BILLING || section == SECTION_CC_BILLING)) {
|
| return input.type == NAME_BILLING_FULL;
|
| }
|
|
|
| - return InputTypeMatchesFieldType(input, field.type());
|
| + return InputTypeMatchesFieldType(input, field_type);
|
| }
|
|
|
| -bool IsCreditCardType(AutofillFieldType type) {
|
| +bool IsCreditCardType(ServerFieldType type) {
|
| return AutofillType(type).group() == CREDIT_CARD;
|
| }
|
|
|
| @@ -155,10 +157,10 @@ bool DetailInputMatchesShippingField(const DetailInput& input,
|
| const AutofillField& field) {
|
| // Equivalent billing field type is used to support UseBillingAsShipping
|
| // usecase.
|
| - AutofillFieldType field_type =
|
| - AutofillType::GetEquivalentBillingFieldType(field.type());
|
| + ServerFieldType field_type =
|
| + AutofillType::GetEquivalentBillingFieldType(field.Type().server_type());
|
|
|
| - return InputTypeMatchesFieldType(input, field_type);
|
| + return InputTypeMatchesFieldType(input, AutofillType(field_type));
|
| }
|
|
|
| // Constructs |inputs| from template data.
|
| @@ -176,14 +178,14 @@ void FillFormGroupFromOutputs(const DetailOutputMap& detail_outputs,
|
| FormGroup* form_group) {
|
| for (DetailOutputMap::const_iterator iter = detail_outputs.begin();
|
| iter != detail_outputs.end(); ++iter) {
|
| + ServerFieldType type = iter->first->type;
|
| if (!iter->second.empty()) {
|
| - AutofillFieldType type = iter->first->type;
|
| if (type == ADDRESS_HOME_COUNTRY || type == ADDRESS_BILLING_COUNTRY) {
|
| - form_group->SetInfo(type,
|
| + form_group->SetInfo(AutofillType(type),
|
| iter->second,
|
| g_browser_process->GetApplicationLocale());
|
| } else {
|
| - form_group->SetRawInfo(iter->first->type, iter->second);
|
| + form_group->SetRawInfo(type, iter->second);
|
| }
|
| }
|
| }
|
| @@ -208,7 +210,7 @@ void GetBillingInfoFromOutputs(const DetailOutputMap& output,
|
| } else if (it->first->type == ADDRESS_HOME_COUNTRY ||
|
| it->first->type == ADDRESS_BILLING_COUNTRY) {
|
| if (profile) {
|
| - profile->SetInfo(it->first->type,
|
| + profile->SetInfo(AutofillType(it->first->type),
|
| trimmed,
|
| g_browser_process->GetApplicationLocale());
|
| }
|
| @@ -248,7 +250,7 @@ ui::BaseWindow* GetBaseWindowForWebContents(
|
| // Extracts the string value of a field with |type| from |output|. This is
|
| // useful when you only need the value of 1 input from a section of view inputs.
|
| string16 GetValueForType(const DetailOutputMap& output,
|
| - AutofillFieldType type) {
|
| + ServerFieldType type) {
|
| for (DetailOutputMap::const_iterator it = output.begin();
|
| it != output.end(); ++it) {
|
| if (it->first->type == type)
|
| @@ -314,12 +316,11 @@ bool HasCompleteAndVerifiedData(const AutofillDataModel& data_model,
|
| if (!data_model.IsVerified())
|
| return false;
|
|
|
| - const std::string app_locale = g_browser_process->GetApplicationLocale();
|
| for (size_t i = 0; i < requested_fields.size(); ++i) {
|
| - AutofillFieldType type = requested_fields[i].type;
|
| + ServerFieldType type = requested_fields[i].type;
|
| if (type != ADDRESS_HOME_LINE2 &&
|
| type != CREDIT_CARD_VERIFICATION_CODE &&
|
| - data_model.GetInfo(type, app_locale).empty()) {
|
| + data_model.GetRawInfo(type).empty()) {
|
| return false;
|
| }
|
| }
|
| @@ -849,7 +850,8 @@ DialogOverlayState AutofillDialogControllerImpl::GetDialogOverlay() const {
|
|
|
| // First-run, post-submit, Wallet expository page.
|
| if (full_wallet_ && full_wallet_->required_actions().empty()) {
|
| - string16 cc_number = full_wallet_->GetInfo(CREDIT_CARD_NUMBER);
|
| + string16 cc_number =
|
| + full_wallet_->GetInfo(AutofillType(CREDIT_CARD_NUMBER));
|
| DCHECK_EQ(16U, cc_number.size());
|
| state.image = GetGeneratedCardImage(
|
| ASCIIToUTF16("xxxx xxxx xxxx ") +
|
| @@ -1197,7 +1199,7 @@ const DetailInputs& AutofillDialogControllerImpl::RequestedFieldsForSection(
|
| }
|
|
|
| ui::ComboboxModel* AutofillDialogControllerImpl::ComboboxModelForAutofillType(
|
| - AutofillFieldType type) {
|
| + ServerFieldType type) {
|
| switch (AutofillType::GetEquivalentFieldType(type)) {
|
| case CREDIT_CARD_EXP_MONTH:
|
| return &cc_exp_month_combobox_model_;
|
| @@ -1504,7 +1506,7 @@ void AutofillDialogControllerImpl::EditCancelledForSection(
|
| }
|
|
|
| gfx::Image AutofillDialogControllerImpl::IconForField(
|
| - AutofillFieldType type, const string16& user_input) const {
|
| + ServerFieldType type, const string16& user_input) const {
|
| ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
|
| if (type == CREDIT_CARD_VERIFICATION_CODE)
|
| return rb.GetImageNamed(IDR_CREDIT_CARD_CVC_HINT);
|
| @@ -1556,7 +1558,7 @@ gfx::Image AutofillDialogControllerImpl::IconForField(
|
| // translateable ones. TODO(groby): Also add tests.
|
| string16 AutofillDialogControllerImpl::InputValidityMessage(
|
| DialogSection section,
|
| - AutofillFieldType type,
|
| + ServerFieldType type,
|
| const string16& value) {
|
| // If the field is edited, clear any Wallet errors.
|
| if (IsPayingWithWallet()) {
|
| @@ -1656,14 +1658,14 @@ ValidityData AutofillDialogControllerImpl::InputsAreValid(
|
| const DetailOutputMap& inputs,
|
| ValidationType validation_type) {
|
| ValidityData invalid_messages;
|
| - std::map<AutofillFieldType, string16> field_values;
|
| + std::map<ServerFieldType, string16> field_values;
|
| for (DetailOutputMap::const_iterator iter = inputs.begin();
|
| iter != inputs.end(); ++iter) {
|
| // Skip empty fields in edit mode.
|
| if (validation_type == VALIDATE_EDIT && iter->second.empty())
|
| continue;
|
|
|
| - const AutofillFieldType type = iter->first->type;
|
| + const ServerFieldType type = iter->first->type;
|
| string16 message = InputValidityMessage(section, type, iter->second);
|
| if (!message.empty())
|
| invalid_messages[type] = message;
|
| @@ -1749,20 +1751,20 @@ void AutofillDialogControllerImpl::UserEditedOrActivatedInput(
|
|
|
| std::vector<string16> popup_values, popup_labels, popup_icons;
|
| if (IsCreditCardType(input->type)) {
|
| - GetManager()->GetCreditCardSuggestions(input->type,
|
| + GetManager()->GetCreditCardSuggestions(AutofillType(input->type),
|
| field_contents,
|
| &popup_values,
|
| &popup_labels,
|
| &popup_icons,
|
| &popup_guids_);
|
| } else {
|
| - std::vector<AutofillFieldType> field_types;
|
| + std::vector<ServerFieldType> field_types;
|
| field_types.push_back(EMAIL_ADDRESS);
|
| for (DetailInputs::const_iterator iter = requested_shipping_fields_.begin();
|
| iter != requested_shipping_fields_.end(); ++iter) {
|
| field_types.push_back(iter->type);
|
| }
|
| - GetManager()->GetProfileSuggestions(input->type,
|
| + GetManager()->GetProfileSuggestions(AutofillType(input->type),
|
| field_contents,
|
| false,
|
| field_types,
|
| @@ -2324,7 +2326,7 @@ 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()))
|
| + if (IsCreditCardType(form_structure_.field(i)->Type().server_type()))
|
| return true;
|
| }
|
|
|
| @@ -2602,7 +2604,8 @@ void AutofillDialogControllerImpl::SuggestionsUpdated() {
|
|
|
| // Add all email addresses.
|
| std::vector<string16> values;
|
| - profiles[i]->GetMultiInfo(EMAIL_ADDRESS, app_locale, &values);
|
| + profiles[i]->GetMultiInfo(
|
| + AutofillType(EMAIL_ADDRESS), app_locale, &values);
|
| for (size_t j = 0; j < values.size(); ++j) {
|
| if (IsValidEmailAddress(values[j]))
|
| suggested_email_.AddKeyedItem(profiles[i]->guid(), values[j]);
|
| @@ -2783,7 +2786,7 @@ 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() == CREDIT_CARD_VERIFICATION_CODE) {
|
| + if (field->Type().server_type() == CREDIT_CARD_VERIFICATION_CODE) {
|
| field->value = cvc;
|
| break;
|
| }
|
| @@ -2792,12 +2795,12 @@ void AutofillDialogControllerImpl::SetCvcResult(const string16& cvc) {
|
|
|
| string16 AutofillDialogControllerImpl::GetValueFromSection(
|
| DialogSection section,
|
| - AutofillFieldType type) {
|
| + ServerFieldType type) {
|
| DCHECK(SectionIsActive(section));
|
|
|
| scoped_ptr<DataModelWrapper> wrapper = CreateWrapper(section);
|
| if (wrapper)
|
| - return wrapper->GetInfo(type);
|
| + return wrapper->GetInfo(AutofillType(type));
|
|
|
| DetailOutputMap output;
|
| view_->GetUserInput(section, &output);
|
| @@ -2974,7 +2977,9 @@ bool AutofillDialogControllerImpl::IsCreditCardExpirationValid(
|
| if (base::StringToInt(month, &month_int) &&
|
| instrument->status() ==
|
| wallet::WalletItems::MaskedInstrument::EXPIRED &&
|
| - year == instrument->GetInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, locale) &&
|
| + year ==
|
| + instrument->GetInfo(
|
| + AutofillType(CREDIT_CARD_EXP_4_DIGIT_YEAR), locale) &&
|
| month_int == instrument->expiration_month()) {
|
| // Otherwise, if the user is editing an instrument that's deemed expired
|
| // by the Online Wallet server, mark it invalid on selection.
|
|
|