OLD | NEW |
1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 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 "ios/chrome/browser/payments/payment_request.h" | 5 #include "ios/chrome/browser/payments/payment_request.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/containers/adapters.h" | 9 #include "base/containers/adapters.h" |
10 #include "base/memory/ptr_util.h" | 10 #include "base/memory/ptr_util.h" |
(...skipping 10 matching lines...) Expand all Loading... |
21 #include "components/payments/core/payment_instrument.h" | 21 #include "components/payments/core/payment_instrument.h" |
22 #include "components/payments/core/payment_request_data_util.h" | 22 #include "components/payments/core/payment_request_data_util.h" |
23 #include "components/prefs/pref_service.h" | 23 #include "components/prefs/pref_service.h" |
24 #include "components/signin/core/browser/signin_manager.h" | 24 #include "components/signin/core/browser/signin_manager.h" |
25 #include "ios/chrome/browser/application_context.h" | 25 #include "ios/chrome/browser/application_context.h" |
26 #include "ios/chrome/browser/autofill/validation_rules_storage_factory.h" | 26 #include "ios/chrome/browser/autofill/validation_rules_storage_factory.h" |
27 #include "ios/chrome/browser/browser_state/chrome_browser_state.h" | 27 #include "ios/chrome/browser/browser_state/chrome_browser_state.h" |
28 #import "ios/chrome/browser/payments/payment_request_util.h" | 28 #import "ios/chrome/browser/payments/payment_request_util.h" |
29 #include "ios/chrome/browser/signin/signin_manager_factory.h" | 29 #include "ios/chrome/browser/signin/signin_manager_factory.h" |
30 #include "ios/web/public/payments/payment_request.h" | 30 #include "ios/web/public/payments/payment_request.h" |
| 31 #include "ios/web/public/web_state/web_state.h" |
31 #include "third_party/libaddressinput/chromium/chrome_metadata_source.h" | 32 #include "third_party/libaddressinput/chromium/chrome_metadata_source.h" |
32 #include "third_party/libaddressinput/src/cpp/include/libaddressinput/source.h" | 33 #include "third_party/libaddressinput/src/cpp/include/libaddressinput/source.h" |
33 #include "third_party/libaddressinput/src/cpp/include/libaddressinput/storage.h" | 34 #include "third_party/libaddressinput/src/cpp/include/libaddressinput/storage.h" |
34 | 35 |
35 #if !defined(__has_feature) || !__has_feature(objc_arc) | 36 #if !defined(__has_feature) || !__has_feature(objc_arc) |
36 #error "This file requires ARC support." | 37 #error "This file requires ARC support." |
37 #endif | 38 #endif |
38 | 39 |
39 namespace { | 40 namespace { |
40 | 41 |
41 std::unique_ptr<::i18n::addressinput::Source> GetAddressInputSource( | 42 std::unique_ptr<::i18n::addressinput::Source> GetAddressInputSource( |
42 net::URLRequestContextGetter* url_context_getter) { | 43 net::URLRequestContextGetter* url_context_getter) { |
43 return std::unique_ptr<::i18n::addressinput::Source>( | 44 return std::unique_ptr<::i18n::addressinput::Source>( |
44 new autofill::ChromeMetadataSource(I18N_ADDRESS_VALIDATION_DATA_URL, | 45 new autofill::ChromeMetadataSource(I18N_ADDRESS_VALIDATION_DATA_URL, |
45 url_context_getter)); | 46 url_context_getter)); |
46 } | 47 } |
47 | 48 |
48 std::unique_ptr<::i18n::addressinput::Storage> GetAddressInputStorage() { | 49 std::unique_ptr<::i18n::addressinput::Storage> GetAddressInputStorage() { |
49 return autofill::ValidationRulesStorageFactory::CreateStorage(); | 50 return autofill::ValidationRulesStorageFactory::CreateStorage(); |
50 } | 51 } |
51 | 52 |
52 } // namespace | 53 } // namespace |
53 | 54 |
54 namespace payments { | 55 namespace payments { |
55 | 56 |
56 PaymentRequest::PaymentRequest( | 57 PaymentRequest::PaymentRequest( |
57 const web::PaymentRequest& web_payment_request, | 58 const web::PaymentRequest& web_payment_request, |
58 ios::ChromeBrowserState* browser_state, | 59 ios::ChromeBrowserState* browser_state, |
| 60 web::WebState* web_state, |
59 autofill::PersonalDataManager* personal_data_manager, | 61 autofill::PersonalDataManager* personal_data_manager, |
60 id<PaymentRequestUIDelegate> payment_request_ui_delegate) | 62 id<PaymentRequestUIDelegate> payment_request_ui_delegate) |
61 : web_payment_request_(web_payment_request), | 63 : web_payment_request_(web_payment_request), |
62 browser_state_(browser_state), | 64 browser_state_(browser_state), |
| 65 web_state_(web_state), |
63 personal_data_manager_(personal_data_manager), | 66 personal_data_manager_(personal_data_manager), |
64 payment_request_ui_delegate_(payment_request_ui_delegate), | 67 payment_request_ui_delegate_(payment_request_ui_delegate), |
65 address_normalizer_(new AddressNormalizerImpl( | 68 address_normalizer_(new AddressNormalizerImpl( |
66 GetAddressInputSource( | 69 GetAddressInputSource( |
67 personal_data_manager_->GetURLRequestContextGetter()), | 70 personal_data_manager_->GetURLRequestContextGetter()), |
68 GetAddressInputStorage())), | 71 GetAddressInputStorage())), |
69 selected_shipping_profile_(nullptr), | 72 selected_shipping_profile_(nullptr), |
70 selected_contact_profile_(nullptr), | 73 selected_contact_profile_(nullptr), |
71 selected_payment_method_(nullptr), | 74 selected_payment_method_(nullptr), |
72 selected_shipping_option_(nullptr), | 75 selected_shipping_option_(nullptr), |
73 profile_comparator_(GetApplicationContext()->GetApplicationLocale(), | 76 profile_comparator_(GetApplicationContext()->GetApplicationLocale(), |
74 *this) { | 77 *this), |
| 78 journey_logger_(IsIncognito(), GetLastCommittedURL(), GetUkmRecorder()) { |
75 PopulateAvailableShippingOptions(); | 79 PopulateAvailableShippingOptions(); |
76 PopulateProfileCache(); | 80 PopulateProfileCache(); |
77 PopulateAvailableProfiles(); | 81 PopulateAvailableProfiles(); |
78 PopulatePaymentMethodCache(); | 82 PopulatePaymentMethodCache(); |
79 PopulateAvailablePaymentMethods(); | 83 PopulateAvailablePaymentMethods(); |
80 | 84 |
81 SetSelectedShippingOption(); | 85 SetSelectedShippingOption(); |
82 | 86 |
83 if (request_shipping()) { | 87 if (request_shipping()) { |
84 // If the merchant provided a default shipping option, and the | 88 // If the merchant provided a default shipping option, and the |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
122 bool PaymentRequest::IsIncognito() const { | 126 bool PaymentRequest::IsIncognito() const { |
123 return browser_state_->IsOffTheRecord(); | 127 return browser_state_->IsOffTheRecord(); |
124 } | 128 } |
125 | 129 |
126 bool PaymentRequest::IsSslCertificateValid() { | 130 bool PaymentRequest::IsSslCertificateValid() { |
127 NOTREACHED() << "Implementation is never used"; | 131 NOTREACHED() << "Implementation is never used"; |
128 return false; | 132 return false; |
129 } | 133 } |
130 | 134 |
131 const GURL& PaymentRequest::GetLastCommittedURL() const { | 135 const GURL& PaymentRequest::GetLastCommittedURL() const { |
132 NOTREACHED() << "Implementation is never used"; | 136 return web_state_->GetLastCommittedURL(); |
133 return GURL::EmptyGURL(); | |
134 } | 137 } |
135 | 138 |
136 void PaymentRequest::DoFullCardRequest( | 139 void PaymentRequest::DoFullCardRequest( |
137 const autofill::CreditCard& credit_card, | 140 const autofill::CreditCard& credit_card, |
138 base::WeakPtr<autofill::payments::FullCardRequest::ResultDelegate> | 141 base::WeakPtr<autofill::payments::FullCardRequest::ResultDelegate> |
139 result_delegate) { | 142 result_delegate) { |
140 [payment_request_ui_delegate_ requestFullCreditCard:credit_card | 143 [payment_request_ui_delegate_ requestFullCreditCard:credit_card |
141 resultDelegate:result_delegate]; | 144 resultDelegate:result_delegate]; |
142 } | 145 } |
143 | 146 |
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
390 // should be treated as the selected item. | 393 // should be treated as the selected item. |
391 for (auto* shipping_option : base::Reversed(shipping_options_)) { | 394 for (auto* shipping_option : base::Reversed(shipping_options_)) { |
392 if (shipping_option->selected) { | 395 if (shipping_option->selected) { |
393 selected_shipping_option_ = shipping_option; | 396 selected_shipping_option_ = shipping_option; |
394 break; | 397 break; |
395 } | 398 } |
396 } | 399 } |
397 } | 400 } |
398 | 401 |
399 } // namespace payments | 402 } // namespace payments |
OLD | NEW |