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

Side by Side Diff: chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc

Issue 23882013: [rAc] Persist selection of newly added cards and addresses. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix test compile 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/autofill/autofill_dialog_controller_impl.h" 5 #include "chrome/browser/ui/autofill/autofill_dialog_controller_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <map> 8 #include <map>
9 #include <string> 9 #include <string>
10 10
(...skipping 2667 matching lines...) Expand 10 before | Expand all | Expand 10 after
2678 if (section == SECTION_CC) { 2678 if (section == SECTION_CC) {
2679 CreditCard card; 2679 CreditCard card;
2680 card.set_origin(kAutofillDialogOrigin); 2680 card.set_origin(kAutofillDialogOrigin);
2681 FillFormGroupFromOutputs(output, &card); 2681 FillFormGroupFromOutputs(output, &card);
2682 2682
2683 // The card holder name comes from the billing address section. 2683 // The card holder name comes from the billing address section.
2684 card.SetRawInfo(CREDIT_CARD_NAME, 2684 card.SetRawInfo(CREDIT_CARD_NAME,
2685 GetValueFromSection(SECTION_BILLING, NAME_FULL)); 2685 GetValueFromSection(SECTION_BILLING, NAME_FULL));
2686 2686
2687 if (ShouldSaveDetailsLocally()) { 2687 if (ShouldSaveDetailsLocally()) {
2688 GetManager()->SaveImportedCreditCard(card); 2688 newly_saved_card_guid_ = GetManager()->SaveImportedCreditCard(card);
2689 DCHECK(!profile()->IsOffTheRecord()); 2689 DCHECK(!profile()->IsOffTheRecord());
2690 newly_saved_card_.reset(new CreditCard(card)); 2690 newly_saved_card_.reset(new CreditCard(card));
2691 } 2691 }
2692 2692
2693 AutofillCreditCardWrapper card_wrapper(&card); 2693 AutofillCreditCardWrapper card_wrapper(&card);
2694 card_wrapper.FillFormStructure(inputs, compare, &form_structure_); 2694 card_wrapper.FillFormStructure(inputs, compare, &form_structure_);
2695 2695
2696 // Again, CVC needs special-casing. Fill it in directly from |output|. 2696 // Again, CVC needs special-casing. Fill it in directly from |output|.
2697 SetOutputForFieldsOfType( 2697 SetOutputForFieldsOfType(
2698 CREDIT_CARD_VERIFICATION_CODE, 2698 CREDIT_CARD_VERIFICATION_CODE,
2699 GetValueForType(output, CREDIT_CARD_VERIFICATION_CODE)); 2699 GetValueForType(output, CREDIT_CARD_VERIFICATION_CODE));
2700 } else { 2700 } else {
2701 AutofillProfile profile; 2701 AutofillProfile profile;
2702 profile.set_origin(kAutofillDialogOrigin); 2702 profile.set_origin(kAutofillDialogOrigin);
2703 FillFormGroupFromOutputs(output, &profile); 2703 FillFormGroupFromOutputs(output, &profile);
2704 2704
2705 if (ShouldSaveDetailsLocally()) 2705 if (ShouldSaveDetailsLocally()) {
2706 SaveProfileGleanedFromSection(profile, section); 2706 std::string guid = GetManager()->SaveImportedProfile(profile);
Evan Stade 2013/09/16 16:58:12 nit: I think the code might be a bit more concise
Ilya Sherman 2013/09/16 20:08:52 Good call. Done.
2707 if (section == SECTION_BILLING) {
2708 newly_saved_billing_profile_guid_ = guid;
2709 } else {
2710 DCHECK_EQ(section, SECTION_SHIPPING);
2711 newly_saved_shipping_profile_guid_ = guid;
2712 }
2713 }
2707 2714
2708 AutofillProfileWrapper profile_wrapper(&profile); 2715 AutofillProfileWrapper profile_wrapper(&profile);
2709 profile_wrapper.FillFormStructure(inputs, compare, &form_structure_); 2716 profile_wrapper.FillFormStructure(inputs, compare, &form_structure_);
2710 } 2717 }
2711 } 2718 }
2712 } 2719 }
2713 2720
2714 void AutofillDialogControllerImpl::FillOutputForSection(DialogSection section) { 2721 void AutofillDialogControllerImpl::FillOutputForSection(DialogSection section) {
2715 FillOutputForSectionWithComparator( 2722 FillOutputForSectionWithComparator(
2716 section, base::Bind(common::DetailInputMatchesField, section)); 2723 section, base::Bind(common::DetailInputMatchesField, section));
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
2749 view_->GetUserInput(section, &output); 2756 view_->GetUserInput(section, &output);
2750 for (DetailOutputMap::iterator iter = output.begin(); iter != output.end(); 2757 for (DetailOutputMap::iterator iter = output.begin(); iter != output.end();
2751 ++iter) { 2758 ++iter) {
2752 if (iter->first->type == type) 2759 if (iter->first->type == type)
2753 return iter->second; 2760 return iter->second;
2754 } 2761 }
2755 2762
2756 return string16(); 2763 return string16();
2757 } 2764 }
2758 2765
2759 void AutofillDialogControllerImpl::SaveProfileGleanedFromSection(
2760 const AutofillProfile& profile,
2761 DialogSection section) {
2762 GetManager()->SaveImportedProfile(profile);
2763 }
2764
2765 SuggestionsMenuModel* AutofillDialogControllerImpl:: 2766 SuggestionsMenuModel* AutofillDialogControllerImpl::
2766 SuggestionsMenuModelForSection(DialogSection section) { 2767 SuggestionsMenuModelForSection(DialogSection section) {
2767 switch (section) { 2768 switch (section) {
2768 case SECTION_CC: 2769 case SECTION_CC:
2769 return &suggested_cc_; 2770 return &suggested_cc_;
2770 case SECTION_BILLING: 2771 case SECTION_BILLING:
2771 return &suggested_billing_; 2772 return &suggested_billing_;
2772 case SECTION_SHIPPING: 2773 case SECTION_SHIPPING:
2773 return &suggested_shipping_; 2774 return &suggested_shipping_;
2774 case SECTION_CC_BILLING: 2775 case SECTION_CC_BILLING:
(...skipping 368 matching lines...) Expand 10 before | Expand all | Expand 10 after
3143 } 3144 }
3144 3145
3145 if (!IsPayingWithWallet()) { 3146 if (!IsPayingWithWallet()) {
3146 for (size_t i = SECTION_MIN; i <= SECTION_MAX; ++i) { 3147 for (size_t i = SECTION_MIN; i <= SECTION_MAX; ++i) {
3147 DialogSection section = static_cast<DialogSection>(i); 3148 DialogSection section = static_cast<DialogSection>(i);
3148 if (!SectionIsActive(section)) 3149 if (!SectionIsActive(section))
3149 continue; 3150 continue;
3150 3151
3151 SuggestionsMenuModel* model = SuggestionsMenuModelForSection(section); 3152 SuggestionsMenuModel* model = SuggestionsMenuModelForSection(section);
3152 std::string item_key = model->GetItemKeyForCheckedItem(); 3153 std::string item_key = model->GetItemKeyForCheckedItem();
3153 if (IsASuggestionItemKey(item_key) || item_key == kSameAsBillingKey) 3154 if (IsASuggestionItemKey(item_key) || item_key == kSameAsBillingKey) {
3154 PersistAutofillChoice(section, item_key); 3155 PersistAutofillChoice(section, item_key);
3156 } else if (item_key == kAddNewItemKey) {
3157 if (section == SECTION_CC)
3158 PersistAutofillChoice(section, newly_saved_card_guid_);
3159 else if (section == SECTION_BILLING)
3160 PersistAutofillChoice(section, newly_saved_billing_profile_guid_);
3161 else if (section == SECTION_SHIPPING)
3162 PersistAutofillChoice(section, newly_saved_shipping_profile_guid_);
3163 else
3164 NOTREACHED();
3165 }
3155 } 3166 }
3156 3167
3157 profile_->GetPrefs()->SetBoolean(::prefs::kAutofillDialogSaveData, 3168 profile_->GetPrefs()->SetBoolean(::prefs::kAutofillDialogSaveData,
3158 view_->SaveDetailsLocally()); 3169 view_->SaveDetailsLocally());
3159 } 3170 }
3160 3171
3161 // On a successful submit, if the user manually selected "pay without wallet", 3172 // On a successful submit, if the user manually selected "pay without wallet",
3162 // stop trying to pay with Wallet on future runs of the dialog. On the other 3173 // stop trying to pay with Wallet on future runs of the dialog. On the other
3163 // hand, if there was an error that prevented the user from having the choice 3174 // hand, if there was an error that prevented the user from having the choice
3164 // of using Wallet, leave the pref alone. 3175 // of using Wallet, leave the pref alone.
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
3370 } 3381 }
3371 3382
3372 void AutofillDialogControllerImpl::OnSubmitButtonDelayEnd() { 3383 void AutofillDialogControllerImpl::OnSubmitButtonDelayEnd() {
3373 if (!view_) 3384 if (!view_)
3374 return; 3385 return;
3375 ScopedViewUpdates updates(view_.get()); 3386 ScopedViewUpdates updates(view_.get());
3376 view_->UpdateButtonStrip(); 3387 view_->UpdateButtonStrip();
3377 } 3388 }
3378 3389
3379 } // namespace autofill 3390 } // namespace autofill
OLDNEW
« no previous file with comments | « chrome/browser/ui/autofill/autofill_dialog_controller_impl.h ('k') | components/autofill/core/browser/autofill_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698