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..e6b8c3cad87f85d708a081ba172b01c8dc4028b7 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<PaymentRequestErrorViewController> _errorViewController; |
base::scoped_nsobject<PaymentItemsDisplayCoordinator> |
_itemsDisplayCoordinator; |
base::scoped_nsobject<ShippingAddressSelectionCoordinator> |
@@ -192,8 +195,9 @@ class FullCardRequester |
_shippingAddressSelectionCoordinator.reset(); |
_shippingOptionSelectionCoordinator.reset(); |
_methodSelectionCoordinator.reset(); |
- _navigationController.reset(); |
+ _errorViewController.reset(); |
_viewController.reset(); |
+ _navigationController.reset(); |
} |
- (void)sendPaymentResponse { |
@@ -273,6 +277,19 @@ class FullCardRequester |
} |
} |
+- (void)displayErrorWithCallback:(void (^)())callback { |
+ _errorViewController.reset([[PaymentRequestErrorViewController alloc] init]); |
lpromero
2017/02/20 17:14:06
This should be created and presented via a coordin
Moe
2017/02/21 05:07:06
Done. So only one view controller per coordinator?
lpromero
2017/02/21 12:26:22
As a rule of thumb yes. This instance is pretty go
|
+ [_errorViewController |
+ setErrorMessage:l10n_util::GetNSString(IDS_PAYMENTS_ERROR_MESSAGE)]; |
+ [_errorViewController setCallback:callback]; |
+ [_errorViewController setDelegate:self]; |
+ [_errorViewController loadModel]; |
+ |
+ [_navigationController presentViewController:_errorViewController |
+ animated:YES |
+ completion:nil]; |
+} |
+ |
#pragma mark - PaymentRequestViewControllerDelegate |
- (void)paymentRequestViewControllerDidCancel: |
@@ -327,6 +344,14 @@ class FullCardRequester |
[_methodSelectionCoordinator start]; |
} |
+#pragma mark - PaymentRequestErrorViewControllerDelegate |
+ |
+- (void)paymentRequestErrorViewControllerDidDismiss: |
+ (PaymentRequestErrorViewController*)controller { |
+ if (controller.callback) |
+ controller.callback(); |
+} |
+ |
#pragma mark - PaymentItemsDisplayCoordinatorDelegate |
- (void)paymentItemsDisplayCoordinatorDidReturn: |