| Index: ios/chrome/browser/payments/payment_request.mm
|
| diff --git a/ios/chrome/browser/payments/payment_request.mm b/ios/chrome/browser/payments/payment_request.mm
|
| index da4ec76873b4b2525c795d85645663b13a6fb8fc..5e9683f2f8d8e20092a232a0a37239154d222a17 100644
|
| --- a/ios/chrome/browser/payments/payment_request.mm
|
| +++ b/ios/chrome/browser/payments/payment_request.mm
|
| @@ -128,29 +128,29 @@ void PaymentRequest::PopulateProfileCache() {
|
| return;
|
|
|
| profile_cache_.reserve(profiles_to_suggest.size());
|
| +
|
| + std::vector<autofill::AutofillProfile*> raw_profiles_for_filtering;
|
| + raw_profiles_for_filtering.reserve(profiles_to_suggest.size());
|
| +
|
| for (const auto* profile : profiles_to_suggest) {
|
| profile_cache_.push_back(*profile);
|
| - shipping_profiles_.push_back(&profile_cache_.back());
|
| - }
|
| -
|
| - // If the merchant provided a shipping option, select a suitable default
|
| - // shipping profile. We pick the profile that is most complete, going down
|
| - // the list in Frecency order.
|
| - // TODO(crbug.com/719652): Have a proper ordering of shipping addresses by
|
| - // completeness.
|
| - if (selected_shipping_option_) {
|
| - selected_shipping_profile_ = shipping_profiles_[0];
|
| - for (autofill::AutofillProfile* profile : shipping_profiles_) {
|
| - if (profile_comparator_.IsShippingComplete(profile)) {
|
| - selected_shipping_profile_ = profile;
|
| - break;
|
| - }
|
| - }
|
| + raw_profiles_for_filtering.push_back(&profile_cache_.back());
|
| }
|
|
|
| // Contact profiles are deduped and ordered in completeness.
|
| contact_profiles_ =
|
| - profile_comparator_.FilterProfilesForContact(shipping_profiles_);
|
| + profile_comparator_.FilterProfilesForContact(raw_profiles_for_filtering);
|
| +
|
| + // Shipping profiles are ordered by completeness.
|
| + shipping_profiles_ =
|
| + profile_comparator_.FilterProfilesForShipping(raw_profiles_for_filtering);
|
| +
|
| + // If the merchant provided a shipping option, and the highest-ranking
|
| + // shipping profile is usable, select it.
|
| + if (selected_shipping_option_ && !shipping_profiles_.empty() &&
|
| + profile_comparator_.IsShippingComplete(shipping_profiles_[0])) {
|
| + selected_shipping_profile_ = shipping_profiles_[0];
|
| + }
|
|
|
| // If the highest-ranking contact profile is usable, select it. Otherwise,
|
| // select none.
|
|
|