Chromium Code Reviews| 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 a7406ad0ff8f434b1e73a0779cdfef9cadd1564d..252e46d2e78d6acb044dc8643de8397a96a9e4f1 100644 |
| --- a/chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc |
| +++ b/chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc |
| @@ -259,9 +259,6 @@ std::string SectionToPrefString(DialogSection section) { |
| case SECTION_SHIPPING: |
| return "shipping"; |
| - |
| - case SECTION_EMAIL: |
| - return "email"; |
| } |
| NOTREACHED(); |
| @@ -593,8 +590,6 @@ void AutofillDialogControllerImpl::Show() { |
| return; |
| } |
| - common::BuildInputsForSection(SECTION_EMAIL, |
| - &requested_email_fields_); |
| common::BuildInputsForSection(SECTION_CC, |
| &requested_cc_fields_); |
| common::BuildInputsForSection(SECTION_BILLING, |
| @@ -1110,8 +1105,6 @@ void AutofillDialogControllerImpl::UpdateForErrors() { |
| const DetailInputs& AutofillDialogControllerImpl::RequestedFieldsForSection( |
| DialogSection section) const { |
| switch (section) { |
| - case SECTION_EMAIL: |
| - return requested_email_fields_; |
| case SECTION_CC: |
| return requested_cc_fields_; |
| case SECTION_BILLING: |
| @@ -1203,8 +1196,6 @@ gfx::Image AutofillDialogControllerImpl::ButtonStripImage() const { |
| string16 AutofillDialogControllerImpl::LabelForSection(DialogSection section) |
| const { |
| switch (section) { |
| - case SECTION_EMAIL: |
| - return l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_SECTION_EMAIL); |
| case SECTION_CC: |
| return l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_SECTION_CC); |
| case SECTION_BILLING: |
| @@ -1212,10 +1203,9 @@ string16 AutofillDialogControllerImpl::LabelForSection(DialogSection section) |
| return l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_SECTION_BILLING); |
| case SECTION_SHIPPING: |
| return l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_SECTION_SHIPPING); |
| - default: |
| - NOTREACHED(); |
| - return string16(); |
| } |
| + NOTREACHED(); |
| + return string16(); |
| } |
| SuggestionState AutofillDialogControllerImpl::SuggestionStateForSection( |
| @@ -1259,12 +1249,6 @@ bool AutofillDialogControllerImpl::SuggestionTextForSection( |
| if (!IsASuggestionItemKey(item_key)) |
| return false; |
| - if (section == SECTION_EMAIL) { |
| - *vertically_compact = *horizontally_compact = |
| - model->GetLabelAt(model->checked_item()); |
| - return true; |
| - } |
| - |
| scoped_ptr<DataModelWrapper> wrapper = CreateWrapper(section); |
| return wrapper->GetDisplayText(vertically_compact, horizontally_compact); |
| } |
| @@ -1381,6 +1365,10 @@ scoped_ptr<DataModelWrapper> AutofillDialogControllerImpl::CreateWrapper( |
| AutofillProfile* profile = GetManager()->GetProfileByGUID(item_key); |
| DCHECK(profile); |
| size_t variant = GetSelectedVariantForModel(*model); |
| + if (section == SECTION_SHIPPING) { |
| + return scoped_ptr<DataModelWrapper>( |
| + new AutofillShippingAddressWrapper(profile, variant)); |
| + } |
|
Evan Stade
2013/09/05 16:54:09
DCHECK_EQ(SECTION_BILLING, section)?
Ilya Sherman
2013/09/06 04:16:05
Done.
|
| return scoped_ptr<DataModelWrapper>( |
| new AutofillProfileWrapper(profile, variant)); |
| } |
| @@ -2239,7 +2227,6 @@ AutofillDialogControllerImpl::AutofillDialogControllerImpl( |
| account_chooser_model_(this, profile_->GetPrefs(), metric_logger_, |
| dialog_type), |
| wallet_client_(profile_->GetRequestContext(), this), |
| - suggested_email_(this), |
| suggested_cc_(this), |
| suggested_billing_(this), |
| suggested_cc_billing_(this), |
| @@ -2359,7 +2346,6 @@ void AutofillDialogControllerImpl::SuggestionsUpdated() { |
| const DetailOutputMap snapshot = TakeUserInputSnapshot(); |
| - suggested_email_.Reset(); |
| suggested_cc_.Reset(); |
| suggested_billing_.Reset(); |
| suggested_cc_billing_.Reset(); |
| @@ -2371,12 +2357,6 @@ void AutofillDialogControllerImpl::SuggestionsUpdated() { |
| l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_USE_BILLING_FOR_SHIPPING)); |
| if (IsPayingWithWallet()) { |
| - if (!account_chooser_model_.active_wallet_account_name().empty()) { |
| - suggested_email_.AddKeyedItem( |
| - base::IntToString(0), |
| - account_chooser_model_.active_wallet_account_name()); |
| - } |
| - |
| const std::vector<wallet::Address*>& addresses = |
| wallet_items_->addresses(); |
| for (size_t i = 0; i < addresses.size(); ++i) { |
| @@ -2471,22 +2451,13 @@ void AutofillDialogControllerImpl::SuggestionsUpdated() { |
| for (size_t i = 0; i < profiles.size(); ++i) { |
| if (!HasCompleteAndVerifiedData(*profiles[i], |
| requested_shipping_fields_) || |
| + profiles[i]->GetRawInfo(EMAIL_ADDRESS).empty() || |
|
Evan Stade
2013/09/05 16:54:09
I feel like this should be covered in one of the o
Ilya Sherman
2013/09/06 04:16:05
Moved to only affect the billing section.
|
| HasInvalidAddress(*profiles[i])) { |
| continue; |
| } |
| - // Add all email addresses. |
| - std::vector<string16> 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]); |
| - } |
| - |
| - // Don't add variants for addresses: the email variants are handled above, |
| - // name is part of credit card and we'll just ignore phone number |
| - // variants. |
| + // Don't add variants for addresses: name is part of credit card and we'll |
| + // just ignore email and phone number variants. |
|
Evan Stade
2013/09/05 16:54:09
:/
Ilya Sherman
2013/09/06 04:16:05
I dunno, are email addresses more important than p
Evan Stade
2013/09/06 21:41:00
I'd rather not drop either, but only dropping one
|
| suggested_billing_.AddKeyedItem(profiles[i]->guid(), |
| profiles[i]->Label()); |
| suggested_shipping_.AddKeyedItem(profiles[i]->guid(), |
| @@ -2507,15 +2478,6 @@ void AutofillDialogControllerImpl::SuggestionsUpdated() { |
| l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_MANAGE_BILLING_ADDRESS)); |
| } |
| - suggested_email_.AddKeyedItem( |
| - kAddNewItemKey, |
| - l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_ADD_EMAIL_ADDRESS)); |
| - if (!IsPayingWithWallet()) { |
| - suggested_email_.AddKeyedItem( |
| - kManageItemsKey, |
| - l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_MANAGE_EMAIL_ADDRESS)); |
| - } |
| - |
| suggested_shipping_.AddKeyedItem( |
| kAddNewItemKey, |
| l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_ADD_SHIPPING_ADDRESS)); |
| @@ -2571,16 +2533,6 @@ void AutofillDialogControllerImpl::FillOutputForSectionWithComparator( |
| const InputFieldComparator& compare) { |
| const DetailInputs& inputs = RequestedFieldsForSection(section); |
| - // Email is hidden while using Wallet, special case it. |
| - if (section == SECTION_EMAIL && IsPayingWithWallet()) { |
| - AutofillProfile profile; |
| - profile.SetRawInfo(EMAIL_ADDRESS, |
| - account_chooser_model_.active_wallet_account_name()); |
| - AutofillProfileWrapper profile_wrapper(&profile, 0); |
| - profile_wrapper.FillFormStructure(inputs, compare, &form_structure_); |
| - return; |
| - } |
| - |
| if (!SectionIsActive(section)) |
| return; |
| @@ -2594,7 +2546,15 @@ void AutofillDialogControllerImpl::FillOutputForSectionWithComparator( |
| // handle them. This isn't necessary when filling the combined CC and |
| // billing section as CVC comes from |full_wallet_| in this case. |
| if (section == SECTION_CC) |
| - SetCvcResult(view_->GetCvc()); |
| + SetOutputForFieldsOfType(CREDIT_CARD_VERIFICATION_CODE, view_->GetCvc()); |
| + |
| + // When filling from Wallet data, use the email address associated with the |
| + // account. There is no other email address stored as part of a Wallet |
| + // address. |
| + if (section == SECTION_CC_BILLING) { |
| + SetOutputForFieldsOfType( |
| + EMAIL_ADDRESS, account_chooser_model_.active_wallet_account_name()); |
| + } |
| } else { |
| // The user manually input data. If using Autofill, save the info as new or |
| // edited data. Always fill local data into |form_structure_|. |
| @@ -2620,18 +2580,14 @@ void AutofillDialogControllerImpl::FillOutputForSectionWithComparator( |
| card_wrapper.FillFormStructure(inputs, compare, &form_structure_); |
| // Again, CVC needs special-casing. Fill it in directly from |output|. |
| - SetCvcResult(GetValueForType(output, CREDIT_CARD_VERIFICATION_CODE)); |
| + SetOutputForFieldsOfType( |
| + CREDIT_CARD_VERIFICATION_CODE, |
| + GetValueForType(output, CREDIT_CARD_VERIFICATION_CODE)); |
| } else { |
| AutofillProfile profile; |
| profile.set_origin(kAutofillDialogOrigin); |
| FillFormGroupFromOutputs(output, &profile); |
| - // For billing, the email address comes from the separate email section. |
| - if (section == SECTION_BILLING) { |
| - profile.SetRawInfo(EMAIL_ADDRESS, |
| - GetValueFromSection(SECTION_EMAIL, EMAIL_ADDRESS)); |
| - } |
| - |
| if (ShouldSaveDetailsLocally()) |
| SaveProfileGleanedFromSection(profile, section); |
| @@ -2656,13 +2612,13 @@ bool AutofillDialogControllerImpl::FormStructureCaresAboutSection( |
| return true; |
| } |
| -void AutofillDialogControllerImpl::SetCvcResult(const string16& cvc) { |
| +void AutofillDialogControllerImpl::SetOutputForFieldsOfType( |
| + ServerFieldType type, |
| + const base::string16& output) { |
| for (size_t i = 0; i < form_structure_.field_count(); ++i) { |
| AutofillField* field = form_structure_.field(i); |
| - if (field->Type().GetStorableType() == CREDIT_CARD_VERIFICATION_CODE) { |
| - field->value = cvc; |
| - break; |
| - } |
| + if (field->Type().GetStorableType() == type) |
| + field->value = output; |
| } |
| } |
| @@ -2689,30 +2645,12 @@ string16 AutofillDialogControllerImpl::GetValueFromSection( |
| void AutofillDialogControllerImpl::SaveProfileGleanedFromSection( |
| const AutofillProfile& profile, |
| DialogSection section) { |
| - if (section == SECTION_EMAIL) { |
| - // Save the email address to the existing (suggested) billing profile. If |
| - // there is no existing profile, the newly created one will pick up this |
| - // email, so in that case do nothing. |
| - scoped_ptr<DataModelWrapper> wrapper = CreateWrapper(SECTION_BILLING); |
| - if (wrapper) { |
| - std::string item_key = SuggestionsMenuModelForSection(SECTION_BILLING)-> |
| - GetItemKeyForCheckedItem(); |
| - AutofillProfile* billing_profile = |
| - GetManager()->GetProfileByGUID(item_key); |
| - billing_profile->OverwriteWithOrAddTo( |
| - profile, |
| - g_browser_process->GetApplicationLocale()); |
| - } |
| - } else { |
| - GetManager()->SaveImportedProfile(profile); |
| - } |
| + GetManager()->SaveImportedProfile(profile); |
| } |
| SuggestionsMenuModel* AutofillDialogControllerImpl:: |
| SuggestionsMenuModelForSection(DialogSection section) { |
| switch (section) { |
| - case SECTION_EMAIL: |
| - return &suggested_email_; |
| case SECTION_CC: |
| return &suggested_cc_; |
| case SECTION_BILLING: |
| @@ -2735,9 +2673,6 @@ const SuggestionsMenuModel* AutofillDialogControllerImpl:: |
| DialogSection AutofillDialogControllerImpl::SectionForSuggestionsMenuModel( |
| const SuggestionsMenuModel& model) { |
| - if (&model == &suggested_email_) |
| - return SECTION_EMAIL; |
| - |
| if (&model == &suggested_cc_) |
| return SECTION_CC; |
| @@ -3059,7 +2994,6 @@ void AutofillDialogControllerImpl::FinishSubmit() { |
| } |
| } |
| - FillOutputForSection(SECTION_EMAIL); |
| FillOutputForSection(SECTION_CC); |
| FillOutputForSection(SECTION_BILLING); |
| FillOutputForSection(SECTION_CC_BILLING); |
| @@ -3304,11 +3238,6 @@ void AutofillDialogControllerImpl::MaybeShowCreditCardBubble() { |
| billing_profile.reset(new AutofillProfile(*profile)); |
| } |
| - // The bubble also needs the associated email address. |
| - billing_profile->SetRawInfo( |
| - EMAIL_ADDRESS, |
| - GetValueFromSection(SECTION_EMAIL, EMAIL_ADDRESS)); |
| - |
| ShowNewCreditCardBubble(newly_saved_card_.Pass(), |
| billing_profile.Pass()); |
| return; |