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

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

Issue 23579009: [rAc] Move email address into billing address section. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Update Mac test expectations Created 7 years, 3 months 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_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 cdddbea0d54125201e54aaea6913735f4c80dba3..087b47e9e94184c7840ddc6ec205472a5dd9517d 100644
--- a/chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc
+++ b/chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc
@@ -261,9 +261,6 @@ std::string SectionToPrefString(DialogSection section) {
case SECTION_SHIPPING:
return "shipping";
-
- case SECTION_EMAIL:
- return "email";
}
NOTREACHED();
@@ -301,10 +298,11 @@ bool HasCompleteAndVerifiedData(const AutofillDataModel& data_model,
return false;
for (size_t i = 0; i < requested_fields.size(); ++i) {
- ServerFieldType type = requested_fields[i].type;
+ ServerFieldType type =
+ AutofillType(requested_fields[i].type).GetStorableType();
if (type != ADDRESS_HOME_LINE2 &&
type != CREDIT_CARD_VERIFICATION_CODE &&
- data_model.GetRawInfo(AutofillType(type).GetStorableType()).empty()) {
+ data_model.GetRawInfo(type).empty()) {
return false;
}
}
@@ -313,9 +311,9 @@ bool HasCompleteAndVerifiedData(const AutofillDataModel& data_model,
}
// Returns true if |profile| has an invalid address, i.e. an invalid state, zip
-// code, or phone number. Otherwise returns false. Profiles with invalid
-// addresses are not suggested in the dropdown menu for billing and shipping
-// addresses.
+// code, phone number, or email address. Otherwise returns false. Profiles with
+// invalid addresses are not suggested in the dropdown menu for billing and
+// shipping addresses.
bool HasInvalidAddress(const AutofillProfile& profile) {
return profile.IsPresentButInvalid(ADDRESS_HOME_STATE) ||
profile.IsPresentButInvalid(ADDRESS_HOME_ZIP) ||
@@ -601,8 +599,6 @@ void AutofillDialogControllerImpl::Show() {
return;
}
- common::BuildInputsForSection(SECTION_EMAIL,
- &requested_email_fields_);
common::BuildInputsForSection(SECTION_CC,
&requested_cc_fields_);
common::BuildInputsForSection(SECTION_BILLING,
@@ -1128,8 +1124,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:
@@ -1221,8 +1215,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:
@@ -1230,10 +1222,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(
@@ -1277,12 +1268,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);
}
@@ -1399,6 +1384,11 @@ 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));
+ }
+ DCHECK_EQ(SECTION_BILLING, section);
return scoped_ptr<DataModelWrapper>(
new AutofillProfileWrapper(profile, variant));
}
@@ -2241,7 +2231,6 @@ AutofillDialogControllerImpl::AutofillDialogControllerImpl(
callback_(callback),
account_chooser_model_(this, profile_->GetPrefs(), metric_logger_),
wallet_client_(profile_->GetRequestContext(), this),
- suggested_email_(this),
suggested_cc_(this),
suggested_billing_(this),
suggested_cc_billing_(this),
@@ -2361,7 +2350,6 @@ void AutofillDialogControllerImpl::SuggestionsUpdated() {
const DetailOutputMap snapshot = TakeUserInputSnapshot();
- suggested_email_.Reset();
suggested_cc_.Reset();
suggested_billing_.Reset();
suggested_cc_billing_.Reset();
@@ -2373,12 +2361,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,28 +2453,19 @@ void AutofillDialogControllerImpl::SuggestionsUpdated() {
const std::vector<AutofillProfile*>& profiles = manager->GetProfiles();
const std::string app_locale = g_browser_process->GetApplicationLocale();
for (size_t i = 0; i < profiles.size(); ++i) {
- if (!HasCompleteAndVerifiedData(*profiles[i],
- requested_shipping_fields_) ||
+ const AutofillProfile& profile = *profiles[i];
+ if (!HasCompleteAndVerifiedData(profile, requested_shipping_fields_) ||
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: name is part of credit card and we'll
+ // just ignore email and phone number variants.
+ suggested_shipping_.AddKeyedItem(profile.guid(), profile.Label());
+ if (!profile.GetRawInfo(EMAIL_ADDRESS).empty() &&
+ !profile.IsPresentButInvalid(EMAIL_ADDRESS)) {
+ suggested_billing_.AddKeyedItem(profile.guid(), profile.Label());
}
-
- // 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.
- suggested_billing_.AddKeyedItem(profiles[i]->guid(),
- profiles[i]->Label());
- suggested_shipping_.AddKeyedItem(profiles[i]->guid(),
- profiles[i]->Label());
}
suggested_cc_.AddKeyedItem(
@@ -2509,15 +2482,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));
@@ -2573,16 +2537,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;
@@ -2596,7 +2550,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_|.
@@ -2622,18 +2584,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);
@@ -2658,13 +2616,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;
}
}
@@ -2691,30 +2649,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:
@@ -2737,9 +2677,6 @@ const SuggestionsMenuModel* AutofillDialogControllerImpl::
DialogSection AutofillDialogControllerImpl::SectionForSuggestionsMenuModel(
const SuggestionsMenuModel& model) {
- if (&model == &suggested_email_)
- return SECTION_EMAIL;
-
if (&model == &suggested_cc_)
return SECTION_CC;
@@ -3067,7 +3004,6 @@ void AutofillDialogControllerImpl::DoFinishSubmit() {
true);
}
- FillOutputForSection(SECTION_EMAIL);
FillOutputForSection(SECTION_CC);
FillOutputForSection(SECTION_BILLING);
FillOutputForSection(SECTION_CC_BILLING);
@@ -3309,11 +3245,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;

Powered by Google App Engine
This is Rietveld 408576698