OLD | NEW |
1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 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/address_edit_coordinator.h" | 5 #import "ios/chrome/browser/ui/payments/address_edit_coordinator.h" |
6 | 6 |
7 #include "base/guid.h" | 7 #include "base/guid.h" |
8 #include "base/logging.h" | 8 #include "base/logging.h" |
9 #include "base/strings/sys_string_conversions.h" | 9 #include "base/strings/sys_string_conversions.h" |
10 #include "components/autofill/core/browser/autofill_profile.h" | 10 #include "components/autofill/core/browser/autofill_profile.h" |
(...skipping 13 matching lines...) Expand all Loading... |
24 namespace { | 24 namespace { |
25 using ::AutofillUITypeFromAutofillType; | 25 using ::AutofillUITypeFromAutofillType; |
26 using ::AutofillTypeFromAutofillUIType; | 26 using ::AutofillTypeFromAutofillUIType; |
27 } // namespace | 27 } // namespace |
28 | 28 |
29 @interface AddressEditCoordinator () | 29 @interface AddressEditCoordinator () |
30 | 30 |
31 @property(nonatomic, strong) | 31 @property(nonatomic, strong) |
32 CountrySelectionCoordinator* countrySelectionCoordinator; | 32 CountrySelectionCoordinator* countrySelectionCoordinator; |
33 | 33 |
34 @property(nonatomic, strong) AddressEditViewController* viewController; | 34 @property(nonatomic, strong) PaymentRequestEditViewController* viewController; |
35 | 35 |
36 @property(nonatomic, strong) AddressEditMediator* mediator; | 36 @property(nonatomic, strong) AddressEditMediator* mediator; |
37 | 37 |
38 @end | 38 @end |
39 | 39 |
40 @implementation AddressEditCoordinator | 40 @implementation AddressEditCoordinator |
41 | 41 |
42 @synthesize address = _address; | 42 @synthesize address = _address; |
43 @synthesize paymentRequest = _paymentRequest; | 43 @synthesize paymentRequest = _paymentRequest; |
44 @synthesize delegate = _delegate; | 44 @synthesize delegate = _delegate; |
45 @synthesize countrySelectionCoordinator = _countrySelectionCoordinator; | 45 @synthesize countrySelectionCoordinator = _countrySelectionCoordinator; |
46 @synthesize viewController = _viewController; | 46 @synthesize viewController = _viewController; |
47 @synthesize mediator = _mediator; | 47 @synthesize mediator = _mediator; |
48 | 48 |
49 - (void)start { | 49 - (void)start { |
50 self.viewController = [[AddressEditViewController alloc] init]; | 50 self.viewController = [[PaymentRequestEditViewController alloc] init]; |
51 // TODO(crbug.com/602666): Title varies depending on what field is missing. | 51 // TODO(crbug.com/602666): Title varies depending on what field is missing. |
52 // e.g., Add Email vs. Add Phone Number. | 52 // e.g., Add Email vs. Add Phone Number. |
53 NSString* title = self.address | 53 NSString* title = self.address |
54 ? l10n_util::GetNSString(IDS_PAYMENTS_EDIT_ADDRESS) | 54 ? l10n_util::GetNSString(IDS_PAYMENTS_EDIT_ADDRESS) |
55 : l10n_util::GetNSString(IDS_PAYMENTS_ADD_ADDRESS); | 55 : l10n_util::GetNSString(IDS_PAYMENTS_ADD_ADDRESS); |
56 [self.viewController setTitle:title]; | 56 [self.viewController setTitle:title]; |
57 [self.viewController setDelegate:self]; | 57 [self.viewController setDelegate:self]; |
58 [self.viewController setValidatorDelegate:self]; | 58 [self.viewController setValidatorDelegate:self]; |
59 self.mediator = | 59 self.mediator = |
60 [[AddressEditMediator alloc] initWithPaymentRequest:self.paymentRequest | 60 [[AddressEditMediator alloc] initWithPaymentRequest:self.paymentRequest |
(...skipping 20 matching lines...) Expand all Loading... |
81 - (NSString*)paymentRequestEditViewController: | 81 - (NSString*)paymentRequestEditViewController: |
82 (PaymentRequestEditViewController*)controller | 82 (PaymentRequestEditViewController*)controller |
83 validateField:(EditorField*)field { | 83 validateField:(EditorField*)field { |
84 if (!field.value.length && field.isRequired) { | 84 if (!field.value.length && field.isRequired) { |
85 return l10n_util::GetNSString( | 85 return l10n_util::GetNSString( |
86 IDS_PAYMENTS_FIELD_REQUIRED_VALIDATION_MESSAGE); | 86 IDS_PAYMENTS_FIELD_REQUIRED_VALIDATION_MESSAGE); |
87 } | 87 } |
88 return nil; | 88 return nil; |
89 } | 89 } |
90 | 90 |
91 #pragma mark - AddressEditViewControllerDelegate | 91 #pragma mark - PaymentRequestEditViewControllerDelegate |
92 | 92 |
93 - (void)paymentRequestEditViewController: | 93 - (void)paymentRequestEditViewController: |
94 (PaymentRequestEditViewController*)controller | 94 (PaymentRequestEditViewController*)controller |
95 didSelectField:(EditorField*)field { | 95 didSelectField:(EditorField*)field { |
96 if (field.autofillUIType == AutofillUITypeProfileHomeAddressCountry) { | 96 if (field.autofillUIType == AutofillUITypeProfileHomeAddressCountry) { |
97 self.countrySelectionCoordinator = [[CountrySelectionCoordinator alloc] | 97 self.countrySelectionCoordinator = [[CountrySelectionCoordinator alloc] |
98 initWithBaseViewController:self.viewController]; | 98 initWithBaseViewController:self.viewController]; |
99 [self.countrySelectionCoordinator setCountries:self.mediator.countries]; | 99 [self.countrySelectionCoordinator setCountries:self.mediator.countries]; |
100 [self.countrySelectionCoordinator | 100 [self.countrySelectionCoordinator |
101 setSelectedCountryCode:self.mediator.selectedCountryCode]; | 101 setSelectedCountryCode:self.mediator.selectedCountryCode]; |
102 [self.countrySelectionCoordinator setDelegate:self]; | 102 [self.countrySelectionCoordinator setDelegate:self]; |
103 [self.countrySelectionCoordinator start]; | 103 [self.countrySelectionCoordinator start]; |
104 } | 104 } |
105 } | 105 } |
106 | 106 |
107 - (void)addressEditViewController:(AddressEditViewController*)controller | 107 - (void)paymentRequestEditViewController: |
108 didFinishEditingFields:(NSArray<EditorField*>*)fields { | 108 (PaymentRequestEditViewController*)controller |
| 109 didFinishEditingFields:(NSArray<EditorField*>*)fields { |
109 // Create an empty autofill profile. If an address is being edited, copy over | 110 // Create an empty autofill profile. If an address is being edited, copy over |
110 // the information. | 111 // the information. |
111 autofill::AutofillProfile address = | 112 autofill::AutofillProfile address = |
112 self.address ? *self.address | 113 self.address ? *self.address |
113 : autofill::AutofillProfile(base::GenerateGUID(), | 114 : autofill::AutofillProfile(base::GenerateGUID(), |
114 autofill::kSettingsOrigin); | 115 autofill::kSettingsOrigin); |
115 | 116 |
116 for (EditorField* field in fields) { | 117 for (EditorField* field in fields) { |
117 address.SetRawInfo(AutofillTypeFromAutofillUIType(field.autofillUIType), | 118 address.SetRawInfo(AutofillTypeFromAutofillUIType(field.autofillUIType), |
118 base::SysNSStringToUTF16(field.value)); | 119 base::SysNSStringToUTF16(field.value)); |
(...skipping 10 matching lines...) Expand all Loading... |
129 self.paymentRequest->GetPersonalDataManager()->UpdateProfile(address); | 130 self.paymentRequest->GetPersonalDataManager()->UpdateProfile(address); |
130 | 131 |
131 // Update the original profile instance that is being edited. | 132 // Update the original profile instance that is being edited. |
132 *self.address = address; | 133 *self.address = address; |
133 } | 134 } |
134 | 135 |
135 [self.delegate addressEditCoordinator:self | 136 [self.delegate addressEditCoordinator:self |
136 didFinishEditingAddress:self.address]; | 137 didFinishEditingAddress:self.address]; |
137 } | 138 } |
138 | 139 |
139 - (void)addressEditViewControllerDidCancel: | 140 - (void)paymentRequestEditViewControllerDidCancel: |
140 (AddressEditViewController*)controller { | 141 (PaymentRequestEditViewController*)controller { |
141 [self.delegate addressEditCoordinatorDidCancel:self]; | 142 [self.delegate addressEditCoordinatorDidCancel:self]; |
142 } | 143 } |
143 | 144 |
144 #pragma mark - CountrySelectionCoordinatorDelegate | 145 #pragma mark - CountrySelectionCoordinatorDelegate |
145 | 146 |
146 - (void)countrySelectionCoordinator:(CountrySelectionCoordinator*)coordinator | 147 - (void)countrySelectionCoordinator:(CountrySelectionCoordinator*)coordinator |
147 didSelectCountryWithCode:(NSString*)countryCode { | 148 didSelectCountryWithCode:(NSString*)countryCode { |
148 if (self.mediator.selectedCountryCode != countryCode) { | 149 if (self.mediator.selectedCountryCode != countryCode) { |
149 [self.mediator setSelectedCountryCode:countryCode]; | 150 [self.mediator setSelectedCountryCode:countryCode]; |
150 [self.viewController loadModel]; | 151 [self.viewController loadModel]; |
151 [self.viewController.collectionView reloadData]; | 152 [self.viewController.collectionView reloadData]; |
152 } | 153 } |
153 [self.countrySelectionCoordinator stop]; | 154 [self.countrySelectionCoordinator stop]; |
154 self.countrySelectionCoordinator = nil; | 155 self.countrySelectionCoordinator = nil; |
155 } | 156 } |
156 | 157 |
157 @end | 158 @end |
OLD | NEW |