Index: ios/chrome/browser/payments/payment_request_coordinator.mm |
diff --git a/ios/chrome/browser/payments/payment_request_coordinator.mm b/ios/chrome/browser/payments/payment_request_coordinator.mm |
index 29e293a9ca46110765d440276b69522fe62729b4..9a99a11ac43e4b1250dd0b284e220173abd07ec2 100644 |
--- a/ios/chrome/browser/payments/payment_request_coordinator.mm |
+++ b/ios/chrome/browser/payments/payment_request_coordinator.mm |
@@ -22,11 +22,13 @@ |
#include "components/autofill/core/browser/payments/full_card_request.h" |
#include "components/autofill/core/browser/personal_data_manager.h" |
#include "components/autofill/core/browser/ui/card_unmask_prompt_controller_impl.h" |
+#include "components/strings/grit/components_strings.h" |
#include "ios/chrome/browser/application_context.h" |
#include "ios/chrome/browser/browser_state/chrome_browser_state.h" |
#include "ios/chrome/browser/payments/payment_request.h" |
#include "ios/chrome/browser/payments/payment_request_util.h" |
#include "ios/chrome/browser/ui/autofill/card_unmask_prompt_view_bridge.h" |
+#include "ui/base/l10n/l10n_util.h" |
// The unmask prompt UI for Payment Request. |
class PRCardUnmaskPromptViewBridge |
@@ -119,6 +121,7 @@ class FullCardRequester |
base::WeakNSProtocol<id<PaymentRequestCoordinatorDelegate>> _delegate; |
base::scoped_nsobject<UINavigationController> _navigationController; |
base::scoped_nsobject<PaymentRequestViewController> _viewController; |
+ base::scoped_nsobject<PaymentRequestErrorCoordinator> _errorCoordinator; |
base::scoped_nsobject<PaymentItemsDisplayCoordinator> |
_itemsDisplayCoordinator; |
base::scoped_nsobject<ShippingAddressSelectionCoordinator> |
@@ -192,8 +195,9 @@ class FullCardRequester |
_shippingAddressSelectionCoordinator.reset(); |
_shippingOptionSelectionCoordinator.reset(); |
_methodSelectionCoordinator.reset(); |
- _navigationController.reset(); |
+ _errorCoordinator.reset(); |
_viewController.reset(); |
+ _navigationController.reset(); |
} |
- (void)sendPaymentResponse { |
@@ -273,6 +277,15 @@ class FullCardRequester |
} |
} |
+- (void)displayErrorWithCallback:(void (^)())callback { |
+ _errorCoordinator.reset([[PaymentRequestErrorCoordinator alloc] |
+ initWithBaseViewController:_navigationController]); |
+ [_errorCoordinator setCallback:callback]; |
+ [_errorCoordinator setDelegate:self]; |
+ |
+ [_errorCoordinator start]; |
+} |
+ |
#pragma mark - PaymentRequestViewControllerDelegate |
- (void)paymentRequestViewControllerDidCancel: |
@@ -327,6 +340,19 @@ class FullCardRequester |
[_methodSelectionCoordinator start]; |
} |
+#pragma mark - PaymentRequestErrorCoordinatorDelegate |
+ |
+- (void)paymentRequestErrorCoordinatorDidDismiss: |
+ (PaymentRequestErrorCoordinator*)coordinator { |
+ void (^callback)() = coordinator.callback; |
lpromero
2017/02/21 16:51:07
Nit: Use ProceduralBlock.
Moe
2017/02/21 22:56:14
Just to make sure, since the callback gets dealloc
Moe
2017/02/21 22:56:14
Done.
lpromero
2017/02/22 13:31:44
Interesting question. If you were using ARC, line
|
+ |
+ [_errorCoordinator stop]; |
+ _errorCoordinator.reset(); |
+ |
+ if (callback) |
+ callback(); |
+} |
+ |
#pragma mark - PaymentItemsDisplayCoordinatorDelegate |
- (void)paymentItemsDisplayCoordinatorDidReturn: |