Index: components/payments/payment_request.cc |
diff --git a/components/payments/payment_request.cc b/components/payments/payment_request.cc |
index 9ea28a891e564eff5c2fcc82fd7f0e9f186bb51d..0ad61671528eb8357d432730d7407a8fee1f7038 100644 |
--- a/components/payments/payment_request.cc |
+++ b/components/payments/payment_request.cc |
@@ -31,7 +31,8 @@ PaymentRequest::PaymentRequest( |
manager_(manager), |
binding_(this, std::move(request)), |
selected_shipping_profile_(nullptr), |
- selected_contact_profile_(nullptr) { |
+ selected_contact_profile_(nullptr), |
+ selected_credit_card_(nullptr) { |
// OnConnectionTerminated will be called when the Mojo pipe is closed. This |
// will happen as a result of many renderer-side events (both successful and |
// erroneous in nature). |
@@ -128,20 +129,8 @@ const std::vector<autofill::AutofillProfile*>& |
return contact_profiles_; |
} |
-autofill::CreditCard* PaymentRequest::GetCurrentlySelectedCreditCard() { |
- // TODO(anthonyvd): Change this code to prioritize server cards and implement |
- // a way to modify this function's return value. |
- const std::vector<autofill::CreditCard*> cards = |
- personal_data_manager()->GetCreditCardsToSuggest(); |
- |
- auto first_complete_card = std::find_if( |
- cards.begin(), |
- cards.end(), |
- [] (autofill::CreditCard* card) { |
- return card->IsValid(); |
- }); |
- |
- return first_complete_card == cards.end() ? nullptr : *first_complete_card; |
+const std::vector<autofill::CreditCard*>& PaymentRequest::credit_cards() { |
Mathieu
2017/02/23 00:39:07
this can go in the .h?
|
+ return credit_cards_; |
} |
void PaymentRequest::PopulateProfileCache() { |
@@ -150,7 +139,7 @@ void PaymentRequest::PopulateProfileCache() { |
// PaymentRequest may outlive the Profiles returned by the Data Manager. |
// Thus, we store copies, and return a vector of pointers to these copies |
- // whenever Profiles are requested. |
+ // whenever Profiles are requested. The same is true for credit cards. |
for (size_t i = 0; i < profiles.size(); i++) { |
profile_cache_.push_back( |
base::MakeUnique<autofill::AutofillProfile>(*profiles[i])); |
@@ -160,6 +149,13 @@ void PaymentRequest::PopulateProfileCache() { |
shipping_profiles_.push_back(profile_cache_[i].get()); |
contact_profiles_.push_back(profile_cache_[i].get()); |
} |
+ |
+ const std::vector<autofill::CreditCard*>& cards = |
+ personal_data_manager()->GetCreditCardsToSuggest(); |
+ for (autofill::CreditCard* card : cards) { |
+ card_cache_.push_back(base::MakeUnique<autofill::CreditCard>(*card)); |
+ credit_cards_.push_back(card_cache_.back().get()); |
+ } |
} |
void PaymentRequest::SetDefaultProfileSelections() { |
@@ -168,6 +164,16 @@ void PaymentRequest::SetDefaultProfileSelections() { |
if (!contact_profiles().empty()) |
set_selected_contact_profile(contact_profiles()[0]); |
+ |
+ // TODO(anthonyvd): Change this code to prioritize server cards and implement |
+ // a way to modify this function's return value. |
+ const std::vector<autofill::CreditCard*> cards = credit_cards(); |
+ auto first_complete_card = |
+ std::find_if(cards.begin(), cards.end(), |
+ [](autofill::CreditCard* card) { return card->IsValid(); }); |
+ |
+ selected_credit_card_ = |
+ first_complete_card == cards.end() ? nullptr : *first_complete_card; |
} |
void PaymentRequest::PopulateValidatedMethodData( |