Chromium Code Reviews| Index: ios/chrome/browser/payments/shipping_address_selection_coordinator.mm |
| diff --git a/ios/chrome/browser/payments/shipping_address_selection_coordinator.mm b/ios/chrome/browser/payments/shipping_address_selection_coordinator.mm |
| index b7f2cf5738111ab2771817c19aa443224f2fc718..8d337dfb7d8ff9204b648d1021e569398d02c0b0 100644 |
| --- a/ios/chrome/browser/payments/shipping_address_selection_coordinator.mm |
| +++ b/ios/chrome/browser/payments/shipping_address_selection_coordinator.mm |
| @@ -4,17 +4,18 @@ |
| #import "ios/chrome/browser/payments/shipping_address_selection_coordinator.h" |
| -#import "base/ios/weak_nsobject.h" |
| -#include "base/mac/scoped_nsobject.h" |
| #include "base/strings/sys_string_conversions.h" |
| #include "components/autofill/core/browser/autofill_profile.h" |
| #include "ios/chrome/browser/payments/payment_request.h" |
| -@interface ShippingAddressSelectionCoordinator () { |
| - base::WeakNSProtocol<id<ShippingAddressSelectionCoordinatorDelegate>> |
| - _delegate; |
| - base::scoped_nsobject<ShippingAddressSelectionViewController> _viewController; |
| -} |
| +#if !defined(__has_feature) || !__has_feature(objc_arc) |
| +#error "This file requires ARC support." |
| +#endif |
| + |
| +@interface ShippingAddressSelectionCoordinator () |
| + |
| +@property(nonatomic, strong) |
| + ShippingAddressSelectionViewController* viewController; |
| // Called when the user selects a shipping address. The cell is checked, the |
| // UI is locked so that the user can't interact with it, then the delegate is |
| @@ -28,18 +29,12 @@ |
| @implementation ShippingAddressSelectionCoordinator |
| @synthesize paymentRequest = _paymentRequest; |
| - |
| -- (id<ShippingAddressSelectionCoordinatorDelegate>)delegate { |
| - return _delegate.get(); |
| -} |
| - |
| -- (void)setDelegate:(id<ShippingAddressSelectionCoordinatorDelegate>)delegate { |
| - _delegate.reset(delegate); |
| -} |
| +@synthesize delegate = _delegate; |
| +@synthesize viewController = _viewController; |
| - (void)start { |
| - _viewController.reset([[ShippingAddressSelectionViewController alloc] |
| - initWithPaymentRequest:_paymentRequest]); |
| + _viewController = [[ShippingAddressSelectionViewController alloc] |
| + initWithPaymentRequest:_paymentRequest]; |
| [_viewController setDelegate:self]; |
| [_viewController loadModel]; |
| @@ -51,13 +46,13 @@ |
| - (void)stop { |
| [self.baseViewController.navigationController popViewControllerAnimated:YES]; |
| - _viewController.reset(); |
| + _viewController = nil; |
| } |
| - (void)stopSpinnerAndDisplayError { |
| // Re-enable user interactions that were disabled earlier in |
| // delayedNotifyDelegateOfSelection. |
| - _viewController.get().view.userInteractionEnabled = YES; |
| + _viewController.view.userInteractionEnabled = YES; |
| [_viewController setIsLoading:NO]; |
| [_viewController |
| @@ -83,25 +78,24 @@ |
| - (void)delayedNotifyDelegateOfSelection: |
| (autofill::AutofillProfile*)shippingAddress { |
| - _viewController.get().view.userInteractionEnabled = NO; |
| - base::WeakNSObject<ShippingAddressSelectionCoordinator> weakSelf(self); |
| - dispatch_after( |
| - dispatch_time(DISPATCH_TIME_NOW, |
| - static_cast<int64_t>(0.2 * NSEC_PER_SEC)), |
| - dispatch_get_main_queue(), ^{ |
| - base::scoped_nsobject<ShippingAddressSelectionCoordinator> strongSelf( |
| - [weakSelf retain]); |
| - // Early return if the coordinator has been deallocated. |
| - if (!strongSelf) |
| - return; |
| - |
| - [_viewController setIsLoading:YES]; |
| - [_viewController loadModel]; |
| - [[_viewController collectionView] reloadData]; |
| - |
| - [_delegate shippingAddressSelectionCoordinator:self |
| - didSelectShippingAddress:shippingAddress]; |
| - }); |
| + _viewController.view.userInteractionEnabled = NO; |
| + __weak ShippingAddressSelectionCoordinator* weakSelf = self; |
| + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, |
| + static_cast<int64_t>(0.2 * NSEC_PER_SEC)), |
| + dispatch_get_main_queue(), ^{ |
| + ShippingAddressSelectionCoordinator* strongSelf = weakSelf; |
| + // Early return if the coordinator has been deallocated. |
|
marq (ping after 24h)
2017/02/22 11:55:58
Nit: no need to early return here.
stkhapugin
2017/02/22 17:47:06
Done.
|
| + if (!strongSelf) |
| + return; |
| + |
| + [strongSelf.viewController setIsLoading:YES]; |
| + [strongSelf.viewController loadModel]; |
| + [[strongSelf.viewController collectionView] reloadData]; |
| + |
| + [strongSelf.delegate |
| + shippingAddressSelectionCoordinator:strongSelf |
| + didSelectShippingAddress:shippingAddress]; |
| + }); |
| } |
| @end |