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..d521e855aa240db35db6bac1c7763a562dc2b87d 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> |
@@ -185,15 +188,14 @@ class FullCardRequester |
} |
- (void)stop { |
- [[_navigationController presentingViewController] |
- dismissViewControllerAnimated:YES |
- completion:nil]; |
+ [_navigationController dismissViewControllerAnimated:YES completion:nil]; |
_itemsDisplayCoordinator.reset(); |
_shippingAddressSelectionCoordinator.reset(); |
_shippingOptionSelectionCoordinator.reset(); |
_methodSelectionCoordinator.reset(); |
- _navigationController.reset(); |
+ _errorCoordinator.reset(); |
_viewController.reset(); |
+ _navigationController.reset(); |
} |
- (void)sendPaymentResponse { |
@@ -273,6 +275,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 +338,19 @@ class FullCardRequester |
[_methodSelectionCoordinator start]; |
} |
+#pragma mark - PaymentRequestErrorCoordinatorDelegate |
+ |
+- (void)paymentRequestErrorCoordinatorDidDismiss: |
+ (PaymentRequestErrorCoordinator*)coordinator { |
+ void (^callback)() = coordinator.callback; |
+ |
+ [_errorCoordinator stop]; |
+ _errorCoordinator.reset(); |
+ |
+ if (callback) |
+ callback(); |
+} |
+ |
#pragma mark - PaymentItemsDisplayCoordinatorDelegate |
- (void)paymentItemsDisplayCoordinatorDidReturn: |