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

Side by Side Diff: components/payments/content/payment_request_state.cc

Issue 2884393002: [WebPayments] Adding FilterProfilesForShipping to profile comparator (Closed)
Patch Set: Created 3 years, 7 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
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "components/payments/content/payment_request_state.h" 5 #include "components/payments/content/payment_request_state.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <set> 8 #include <set>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 void PaymentRequestState::PopulateProfileCache() { 221 void PaymentRequestState::PopulateProfileCache() {
222 std::vector<autofill::AutofillProfile*> profiles = 222 std::vector<autofill::AutofillProfile*> profiles =
223 personal_data_manager_->GetProfilesToSuggest(); 223 personal_data_manager_->GetProfilesToSuggest();
224 224
225 // PaymentRequest may outlive the Profiles returned by the Data Manager. 225 // PaymentRequest may outlive the Profiles returned by the Data Manager.
226 // Thus, we store copies, and return a vector of pointers to these copies 226 // Thus, we store copies, and return a vector of pointers to these copies
227 // whenever Profiles are requested. 227 // whenever Profiles are requested.
228 for (size_t i = 0; i < profiles.size(); i++) { 228 for (size_t i = 0; i < profiles.size(); i++) {
229 profile_cache_.push_back( 229 profile_cache_.push_back(
230 base::MakeUnique<autofill::AutofillProfile>(*profiles[i])); 230 base::MakeUnique<autofill::AutofillProfile>(*profiles[i]));
231
232 shipping_profiles_.push_back(profile_cache_[i].get());
233 } 231 }
234 232
235 std::vector<autofill::AutofillProfile*> raw_profiles_for_filtering( 233 std::vector<autofill::AutofillProfile*> raw_profiles_for_filtering(
236 profile_cache_.size()); 234 profile_cache_.size());
237 std::transform(profile_cache_.begin(), profile_cache_.end(), 235 std::transform(profile_cache_.begin(), profile_cache_.end(),
238 raw_profiles_for_filtering.begin(), 236 raw_profiles_for_filtering.begin(),
239 [](const std::unique_ptr<autofill::AutofillProfile>& p) { 237 [](const std::unique_ptr<autofill::AutofillProfile>& p) {
240 return p.get(); 238 return p.get();
241 }); 239 });
242 240
243 contact_profiles_ = profile_comparator()->FilterProfilesForContact( 241 contact_profiles_ = profile_comparator()->FilterProfilesForContact(
244 raw_profiles_for_filtering); 242 raw_profiles_for_filtering);
243 shipping_profiles_ = profile_comparator()->FilterProfilesForShipping(
Mathieu 2017/05/16 20:16:51 can you also call this in payment_request.mm (http
tmartino 2017/05/18 20:49:36 Done
244 raw_profiles_for_filtering);
245 245
246 // Create the list of available instruments. A copy of each card will be made 246 // Create the list of available instruments. A copy of each card will be made
247 // by their respective AutofillPaymentInstrument. 247 // by their respective AutofillPaymentInstrument.
248 const std::vector<autofill::CreditCard*>& cards = 248 const std::vector<autofill::CreditCard*>& cards =
249 personal_data_manager_->GetCreditCardsToSuggest(); 249 personal_data_manager_->GetCreditCardsToSuggest();
250 for (autofill::CreditCard* card : cards) 250 for (autofill::CreditCard* card : cards)
251 AddAutofillPaymentInstrument(/*selected=*/false, *card); 251 AddAutofillPaymentInstrument(/*selected=*/false, *card);
252 } 252 }
253 253
254 void PaymentRequestState::SetDefaultProfileSelections() { 254 void PaymentRequestState::SetDefaultProfileSelections() {
255 // Only pre-select an address if the merchant provided at least one selected 255 // Only pre-select an address if the merchant provided at least one selected
256 // shipping option. 256 // shipping option.
257 if (!shipping_profiles().empty() && spec_->selected_shipping_option()) { 257 if (!shipping_profiles().empty() && spec_->selected_shipping_option()) {
258 // Choose any complete shipping profile, or default to the most frecent 258 // Choose any complete shipping profile, or default to the most frecent
259 // address if no complete address could be found. 259 // address if no complete address could be found.
260 selected_shipping_profile_ = shipping_profiles_[0]; 260 selected_shipping_profile_ = shipping_profiles_[0];
261 for (autofill::AutofillProfile* profile : shipping_profiles_) { 261 for (autofill::AutofillProfile* profile : shipping_profiles_) {
Mathieu 2017/05/16 20:16:51 can you remove this code? I think we should be goo
tmartino 2017/05/18 20:49:37 Done
262 if (profile_comparator_.IsShippingComplete(profile)) { 262 if (profile_comparator_.IsShippingComplete(profile)) {
263 selected_shipping_profile_ = profile; 263 selected_shipping_profile_ = profile;
264 break; 264 break;
265 } 265 }
266 } 266 }
267 } 267 }
268 268
269 // Contact profiles were ordered by completeness in addition to frecency; 269 // Contact profiles were ordered by completeness in addition to frecency;
270 // the first one is the best default selection. 270 // the first one is the best default selection.
271 if (!contact_profiles().empty()) 271 if (!contact_profiles().empty())
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
309 if (is_waiting_for_merchant_validation_) 309 if (is_waiting_for_merchant_validation_)
310 return false; 310 return false;
311 311
312 if (!profile_comparator()->IsShippingComplete(selected_shipping_profile_)) 312 if (!profile_comparator()->IsShippingComplete(selected_shipping_profile_))
313 return false; 313 return false;
314 314
315 return profile_comparator()->IsContactInfoComplete(selected_contact_profile_); 315 return profile_comparator()->IsContactInfoComplete(selected_contact_profile_);
316 } 316 }
317 317
318 } // namespace payments 318 } // namespace payments
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698