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

Side by Side Diff: ios/chrome/browser/ui/payments/payment_request_coordinator.mm

Issue 2924663003: [Payment Request] Moves PaymentRequestViewController to :payments_ui (Closed)
Patch Set: Created 3 years, 6 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 #import "ios/chrome/browser/ui/payments/payment_request_coordinator.h" 5 #import "ios/chrome/browser/ui/payments/payment_request_coordinator.h"
6 6
7 #include "base/memory/ptr_util.h" 7 #include "base/memory/ptr_util.h"
8 #include "components/autofill/core/browser/autofill_profile.h" 8 #include "components/autofill/core/browser/autofill_profile.h"
9 #include "components/autofill/core/browser/credit_card.h" 9 #include "components/autofill/core/browser/credit_card.h"
10 #include "components/payments/core/payment_address.h" 10 #include "components/payments/core/payment_address.h"
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 @synthesize autofillManager = _autofillManager; 48 @synthesize autofillManager = _autofillManager;
49 @synthesize browserState = _browserState; 49 @synthesize browserState = _browserState;
50 @synthesize pageFavicon = _pageFavicon; 50 @synthesize pageFavicon = _pageFavicon;
51 @synthesize pageTitle = _pageTitle; 51 @synthesize pageTitle = _pageTitle;
52 @synthesize pageHost = _pageHost; 52 @synthesize pageHost = _pageHost;
53 @synthesize connectionSecure = _connectionSecure; 53 @synthesize connectionSecure = _connectionSecure;
54 @synthesize delegate = _delegate; 54 @synthesize delegate = _delegate;
55 55
56 - (void)start { 56 - (void)start {
57 _mediator = 57 _mediator =
58 [[PaymentRequestMediator alloc] initWithBrowserState:_browserState]; 58 [[PaymentRequestMediator alloc] initWithBrowserState:_browserState
59 paymentRequest:_paymentRequest];
59 60
60 _viewController = [[PaymentRequestViewController alloc] 61 _viewController = [[PaymentRequestViewController alloc] init];
61 initWithPaymentRequest:_paymentRequest];
62 [_viewController setPageFavicon:_pageFavicon]; 62 [_viewController setPageFavicon:_pageFavicon];
63 [_viewController setPageTitle:_pageTitle]; 63 [_viewController setPageTitle:_pageTitle];
64 [_viewController setPageHost:_pageHost]; 64 [_viewController setPageHost:_pageHost];
65 [_viewController setConnectionSecure:_connectionSecure]; 65 [_viewController setConnectionSecure:_connectionSecure];
66 [_viewController setDelegate:self]; 66 [_viewController setDelegate:self];
67 [_viewController setDataSource:_mediator]; 67 [_viewController setDataSource:_mediator];
68 [_viewController loadModel]; 68 [_viewController loadModel];
69 69
70 _navigationController = [[UINavigationController alloc] 70 _navigationController = [[UINavigationController alloc]
71 initWithRootViewController:_viewController]; 71 initWithRootViewController:_viewController];
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 [[_viewController collectionView] reloadData]; 117 [[_viewController collectionView] reloadData];
118 118
119 [_delegate paymentRequestCoordinator:self 119 [_delegate paymentRequestCoordinator:self
120 didCompletePaymentRequestWithCard:card 120 didCompletePaymentRequestWithCard:card
121 verificationCode:verificationCode]; 121 verificationCode:verificationCode];
122 } 122 }
123 123
124 - (void)updatePaymentDetails:(web::PaymentDetails)paymentDetails { 124 - (void)updatePaymentDetails:(web::PaymentDetails)paymentDetails {
125 BOOL totalValueChanged = 125 BOOL totalValueChanged =
126 (_paymentRequest->payment_details().total != paymentDetails.total); 126 (_paymentRequest->payment_details().total != paymentDetails.total);
127 [_mediator setTotalValueChanged:totalValueChanged];
127 _paymentRequest->UpdatePaymentDetails(paymentDetails); 128 _paymentRequest->UpdatePaymentDetails(paymentDetails);
128 129
129 if (_paymentRequest->shipping_options().empty()) { 130 if (_paymentRequest->shipping_options().empty()) {
130 // Display error in the shipping address/option selection view. 131 // Display error in the shipping address/option selection view.
131 if (_shippingAddressSelectionCoordinator) { 132 if (_shippingAddressSelectionCoordinator) {
132 _paymentRequest->set_selected_shipping_profile(nil); 133 _paymentRequest->set_selected_shipping_profile(nil);
133 [_shippingAddressSelectionCoordinator stopSpinnerAndDisplayError]; 134 [_shippingAddressSelectionCoordinator stopSpinnerAndDisplayError];
134 } else if (_shippingOptionSelectionCoordinator) { 135 } else if (_shippingOptionSelectionCoordinator) {
135 [_shippingOptionSelectionCoordinator stopSpinnerAndDisplayError]; 136 [_shippingOptionSelectionCoordinator stopSpinnerAndDisplayError];
136 } 137 }
137 // Update the payment request summary view. 138 // Update the payment request summary view.
138 [_viewController loadModel]; 139 [_viewController loadModel];
139 [[_viewController collectionView] reloadData]; 140 [[_viewController collectionView] reloadData];
140 } else { 141 } else {
141 // Update the payment summary section. 142 // Update the payment summary item.
142 [_viewController 143 [_viewController updatePaymentSummaryItem];
143 updatePaymentSummaryWithTotalValueChanged:totalValueChanged];
144 144
145 if (_shippingAddressSelectionCoordinator) { 145 if (_shippingAddressSelectionCoordinator) {
146 // Set the selected shipping address and update the selected shipping 146 // Set the selected shipping address.
147 // address in the payment request summary view.
148 _paymentRequest->set_selected_shipping_profile(_pendingShippingAddress); 147 _paymentRequest->set_selected_shipping_profile(_pendingShippingAddress);
149 _pendingShippingAddress = nil; 148 _pendingShippingAddress = nil;
150 [_viewController updateSelectedShippingAddressUI];
151 149
152 // Dismiss the shipping address selection view. 150 // Dismiss the shipping address selection view.
153 [_shippingAddressSelectionCoordinator stop]; 151 [_shippingAddressSelectionCoordinator stop];
154 _shippingAddressSelectionCoordinator = nil; 152 _shippingAddressSelectionCoordinator = nil;
155 } else if (_shippingOptionSelectionCoordinator) { 153 } else if (_shippingOptionSelectionCoordinator) {
156 // Update the selected shipping option in the payment request summary
157 // view. The updated selection is already reflected in |_paymentRequest|.
158 [_viewController updateSelectedShippingOptionUI];
159
160 // Dismiss the shipping option selection view. 154 // Dismiss the shipping option selection view.
161 [_shippingOptionSelectionCoordinator stop]; 155 [_shippingOptionSelectionCoordinator stop];
162 _shippingOptionSelectionCoordinator = nil; 156 _shippingOptionSelectionCoordinator = nil;
163 } 157 }
158
159 // Update the Shipping section in the payment request summary view.
160 [_viewController updateShippingSection];
164 } 161 }
165 } 162 }
166 163
167 - (void)displayErrorWithCallback:(ProceduralBlock)callback { 164 - (void)displayErrorWithCallback:(ProceduralBlock)callback {
168 _errorCoordinator = [[PaymentRequestErrorCoordinator alloc] 165 _errorCoordinator = [[PaymentRequestErrorCoordinator alloc]
169 initWithBaseViewController:_navigationController]; 166 initWithBaseViewController:_navigationController];
170 [_errorCoordinator setCallback:callback]; 167 [_errorCoordinator setCallback:callback];
171 [_errorCoordinator setDelegate:self]; 168 [_errorCoordinator setDelegate:self];
172 169
173 [_errorCoordinator start]; 170 [_errorCoordinator start];
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 250
254 if (callback) 251 if (callback)
255 callback(); 252 callback();
256 } 253 }
257 254
258 #pragma mark - PaymentItemsDisplayCoordinatorDelegate 255 #pragma mark - PaymentItemsDisplayCoordinatorDelegate
259 256
260 - (void)paymentItemsDisplayCoordinatorDidReturn: 257 - (void)paymentItemsDisplayCoordinatorDidReturn:
261 (PaymentItemsDisplayCoordinator*)coordinator { 258 (PaymentItemsDisplayCoordinator*)coordinator {
262 // Clear the 'Updated' label on the payment summary item, if there is one. 259 // Clear the 'Updated' label on the payment summary item, if there is one.
263 [_viewController updatePaymentSummaryWithTotalValueChanged:NO]; 260 [_viewController updatePaymentSummaryItem];
264 261
265 [_itemsDisplayCoordinator stop]; 262 [_itemsDisplayCoordinator stop];
266 _itemsDisplayCoordinator = nil; 263 _itemsDisplayCoordinator = nil;
267 } 264 }
268 265
269 - (void)paymentItemsDisplayCoordinatorDidConfirm: 266 - (void)paymentItemsDisplayCoordinatorDidConfirm:
270 (PaymentItemsDisplayCoordinator*)coordinator { 267 (PaymentItemsDisplayCoordinator*)coordinator {
271 [self sendPaymentResponse]; 268 [self sendPaymentResponse];
272 } 269 }
273 270
274 #pragma mark - ContactInfoSelectionCoordinatorDelegate 271 #pragma mark - ContactInfoSelectionCoordinatorDelegate
275 272
276 - (void) 273 - (void)
277 contactInfoSelectionCoordinator:(ContactInfoSelectionCoordinator*)coordinator 274 contactInfoSelectionCoordinator:(ContactInfoSelectionCoordinator*)coordinator
278 didSelectContactProfile:(autofill::AutofillProfile*)contactProfile { 275 didSelectContactProfile:(autofill::AutofillProfile*)contactProfile {
279 _paymentRequest->set_selected_contact_profile(contactProfile); 276 _paymentRequest->set_selected_contact_profile(contactProfile);
280 277
281 [_viewController updateSelectedContactInfoUI]; 278 [_viewController updateContactInfoSection];
282 279
283 [_contactInfoSelectionCoordinator stop]; 280 [_contactInfoSelectionCoordinator stop];
284 _contactInfoSelectionCoordinator = nil; 281 _contactInfoSelectionCoordinator = nil;
285 } 282 }
286 283
287 - (void)contactInfoSelectionCoordinatorDidReturn: 284 - (void)contactInfoSelectionCoordinatorDidReturn:
288 (ContactInfoSelectionCoordinator*)coordinator { 285 (ContactInfoSelectionCoordinator*)coordinator {
289 [_contactInfoSelectionCoordinator stop]; 286 [_contactInfoSelectionCoordinator stop];
290 _contactInfoSelectionCoordinator = nil; 287 _contactInfoSelectionCoordinator = nil;
291 } 288 }
292 289
293 #pragma mark - ShippingAddressSelectionCoordinatorDelegate 290 #pragma mark - ShippingAddressSelectionCoordinatorDelegate
294 291
295 - (void)shippingAddressSelectionCoordinator: 292 - (void)shippingAddressSelectionCoordinator:
296 (ShippingAddressSelectionCoordinator*)coordinator 293 (ShippingAddressSelectionCoordinator*)coordinator
297 didSelectShippingAddress: 294 didSelectShippingAddress:
298 (autofill::AutofillProfile*)shippingAddress { 295 (autofill::AutofillProfile*)shippingAddress {
299 _pendingShippingAddress = shippingAddress; 296 _pendingShippingAddress = shippingAddress;
300 DCHECK(shippingAddress); 297 DCHECK(shippingAddress);
301 payments::PaymentAddress address = GetPaymentAddressFromAutofillProfile( 298 payments::PaymentAddress address = GetPaymentAddressFromAutofillProfile(
302 *shippingAddress, GetApplicationContext()->GetApplicationLocale()); 299 *shippingAddress, GetApplicationContext()->GetApplicationLocale());
303 [_delegate paymentRequestCoordinator:self didSelectShippingAddress:address]; 300 [_delegate paymentRequestCoordinator:self didSelectShippingAddress:address];
304 } 301 }
305 302
306 - (void)shippingAddressSelectionCoordinatorDidReturn: 303 - (void)shippingAddressSelectionCoordinatorDidReturn:
307 (ShippingAddressSelectionCoordinator*)coordinator { 304 (ShippingAddressSelectionCoordinator*)coordinator {
308 // Clear the 'Updated' label on the payment summary item, if there is one. 305 // Clear the 'Updated' label on the payment summary item, if there is one.
309 [_viewController updatePaymentSummaryWithTotalValueChanged:NO]; 306 [_viewController updatePaymentSummaryItem];
310 307
311 [_shippingAddressSelectionCoordinator stop]; 308 [_shippingAddressSelectionCoordinator stop];
312 _shippingAddressSelectionCoordinator = nil; 309 _shippingAddressSelectionCoordinator = nil;
313 } 310 }
314 311
315 #pragma mark - ShippingOptionSelectionCoordinatorDelegate 312 #pragma mark - ShippingOptionSelectionCoordinatorDelegate
316 313
317 - (void)shippingOptionSelectionCoordinator: 314 - (void)shippingOptionSelectionCoordinator:
318 (ShippingOptionSelectionCoordinator*)coordinator 315 (ShippingOptionSelectionCoordinator*)coordinator
319 didSelectShippingOption: 316 didSelectShippingOption:
320 (web::PaymentShippingOption*)shippingOption { 317 (web::PaymentShippingOption*)shippingOption {
321 [_delegate paymentRequestCoordinator:self 318 [_delegate paymentRequestCoordinator:self
322 didSelectShippingOption:*shippingOption]; 319 didSelectShippingOption:*shippingOption];
323 } 320 }
324 321
325 - (void)shippingOptionSelectionCoordinatorDidReturn: 322 - (void)shippingOptionSelectionCoordinatorDidReturn:
326 (ShippingAddressSelectionCoordinator*)coordinator { 323 (ShippingAddressSelectionCoordinator*)coordinator {
327 // Clear the 'Updated' label on the payment summary item, if there is one. 324 // Clear the 'Updated' label on the payment summary item, if there is one.
328 [_viewController updatePaymentSummaryWithTotalValueChanged:NO]; 325 [_viewController updatePaymentSummaryItem];
329 326
330 [_shippingOptionSelectionCoordinator stop]; 327 [_shippingOptionSelectionCoordinator stop];
331 _shippingOptionSelectionCoordinator = nil; 328 _shippingOptionSelectionCoordinator = nil;
332 } 329 }
333 330
334 #pragma mark - PaymentMethodSelectionCoordinatorDelegate 331 #pragma mark - PaymentMethodSelectionCoordinatorDelegate
335 332
336 - (void)paymentMethodSelectionCoordinator: 333 - (void)paymentMethodSelectionCoordinator:
337 (PaymentMethodSelectionCoordinator*)coordinator 334 (PaymentMethodSelectionCoordinator*)coordinator
338 didSelectPaymentMethod:(autofill::CreditCard*)creditCard { 335 didSelectPaymentMethod:(autofill::CreditCard*)creditCard {
339 _paymentRequest->set_selected_credit_card(creditCard); 336 _paymentRequest->set_selected_credit_card(creditCard);
340 337
341 [_viewController updateSelectedPaymentMethodUI]; 338 [_viewController updatePaymentMethodSection];
342 339
343 // Clear the 'Updated' label on the payment summary item, if there is one. 340 // Clear the 'Updated' label on the payment summary item, if there is one.
344 [_viewController updatePaymentSummaryWithTotalValueChanged:NO]; 341 [_viewController updatePaymentSummaryItem];
345 342
346 [_methodSelectionCoordinator stop]; 343 [_methodSelectionCoordinator stop];
347 _methodSelectionCoordinator = nil; 344 _methodSelectionCoordinator = nil;
348 } 345 }
349 346
350 - (void)paymentMethodSelectionCoordinatorDidReturn: 347 - (void)paymentMethodSelectionCoordinatorDidReturn:
351 (PaymentMethodSelectionCoordinator*)coordinator { 348 (PaymentMethodSelectionCoordinator*)coordinator {
352 // Clear the 'Updated' label on the payment summary item, if there is one. 349 // Clear the 'Updated' label on the payment summary item, if there is one.
353 [_viewController updatePaymentSummaryWithTotalValueChanged:NO]; 350 [_viewController updatePaymentSummaryItem];
354 351
355 [_methodSelectionCoordinator stop]; 352 [_methodSelectionCoordinator stop];
356 _methodSelectionCoordinator = nil; 353 _methodSelectionCoordinator = nil;
357 } 354 }
358 355
359 @end 356 @end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698