| Index: components/payments/content/payment_request_state.cc
|
| diff --git a/components/payments/content/payment_request_state.cc b/components/payments/content/payment_request_state.cc
|
| index afa32130a63db2460539c8fc7a29487cc0d0cf75..c43f691dea6a9bc35026a4b39a04087cfa2433fa 100644
|
| --- a/components/payments/content/payment_request_state.cc
|
| +++ b/components/payments/content/payment_request_state.cc
|
| @@ -17,8 +17,8 @@
|
| #include "components/payments/content/payment_response_helper.h"
|
| #include "components/payments/core/autofill_payment_instrument.h"
|
| #include "components/payments/core/payment_instrument.h"
|
| +#include "components/payments/core/payment_request_data_util.h"
|
| #include "components/payments/core/payment_request_delegate.h"
|
| -#include "components/payments/core/profile_util.h"
|
|
|
| namespace payments {
|
|
|
| @@ -37,7 +37,8 @@ PaymentRequestState::PaymentRequestState(
|
| selected_shipping_profile_(nullptr),
|
| selected_contact_profile_(nullptr),
|
| selected_instrument_(nullptr),
|
| - payment_request_delegate_(payment_request_delegate) {
|
| + payment_request_delegate_(payment_request_delegate),
|
| + profile_comparator_(app_locale, *spec) {
|
| PopulateProfileCache();
|
| SetDefaultProfileSelections();
|
| spec_->AddObserver(this);
|
| @@ -163,10 +164,8 @@ void PaymentRequestState::SetSelectedShippingProfile(
|
| // Start the normalization of the shipping address.
|
| // Use the country code from the profile if it is set, otherwise infer it
|
| // from the |app_locale_|.
|
| - std::string country_code = base::UTF16ToUTF8(
|
| - selected_shipping_profile_->GetRawInfo(autofill::ADDRESS_HOME_COUNTRY));
|
| - if (!autofill::data_util::IsValidCountryCode(country_code))
|
| - country_code = autofill::AutofillCountry::CountryCodeForLocale(app_locale_);
|
| + std::string country_code = data_util::GetCountryCodeWithFallback(
|
| + selected_shipping_profile_, app_locale_);
|
| payment_request_delegate_->GetAddressNormalizer()->StartAddressNormalization(
|
| *selected_shipping_profile_, country_code, /*timeout_seconds=*/2, this);
|
| }
|
| @@ -218,8 +217,8 @@ void PaymentRequestState::PopulateProfileCache() {
|
| return p.get();
|
| });
|
|
|
| - contact_profiles_ = profile_util::FilterProfilesForContact(
|
| - raw_profiles_for_filtering, GetApplicationLocale(), *spec_);
|
| + contact_profiles_ = profile_comparator()->FilterProfilesForContact(
|
| + raw_profiles_for_filtering);
|
|
|
| // Create the list of available instruments.
|
| const std::vector<autofill::CreditCard*>& cards =
|
| @@ -274,15 +273,13 @@ bool PaymentRequestState::ArePaymentDetailsSatisfied() {
|
| }
|
|
|
| bool PaymentRequestState::ArePaymentOptionsSatisfied() {
|
| - // TODO(mathp): Have a measure of shipping address completeness.
|
| - if (spec_->request_shipping() && selected_shipping_profile_ == nullptr)
|
| + if (is_waiting_for_merchant_validation_)
|
| return false;
|
|
|
| - if (is_waiting_for_merchant_validation_)
|
| + if (!profile_comparator()->IsShippingComplete(selected_shipping_profile_))
|
| return false;
|
|
|
| - profile_util::PaymentsProfileComparator comparator(app_locale_, *spec_);
|
| - return comparator.IsContactInfoComplete(selected_contact_profile_);
|
| + return profile_comparator()->IsContactInfoComplete(selected_contact_profile_);
|
| }
|
|
|
| } // namespace payments
|
|
|