Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(152)

Side by Side Diff: ios/chrome/browser/ui/payments/credit_card_edit_coordinator.mm

Issue 2876603005: [Payment Request] Refactors the edit view controller (Closed)
Patch Set: Addressed comments Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | ios/chrome/browser/ui/payments/credit_card_edit_coordinator_unittest.mm » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/credit_card_edit_coordinator.h" 5 #import "ios/chrome/browser/ui/payments/credit_card_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/credit_card.h" 10 #include "components/autofill/core/browser/credit_card.h"
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 @synthesize paymentRequest = _paymentRequest; 42 @synthesize paymentRequest = _paymentRequest;
43 @synthesize delegate = _delegate; 43 @synthesize delegate = _delegate;
44 44
45 - (void)start { 45 - (void)start {
46 _viewController = [[CreditCardEditViewController alloc] init]; 46 _viewController = [[CreditCardEditViewController alloc] init];
47 // TODO(crbug.com/602666): Title varies depending on the missing fields. 47 // TODO(crbug.com/602666): Title varies depending on the missing fields.
48 NSString* title = _creditCard 48 NSString* title = _creditCard
49 ? l10n_util::GetNSString(IDS_PAYMENTS_EDIT_CARD) 49 ? l10n_util::GetNSString(IDS_PAYMENTS_EDIT_CARD)
50 : l10n_util::GetNSString(IDS_PAYMENTS_ADD_CARD_LABEL); 50 : l10n_util::GetNSString(IDS_PAYMENTS_ADD_CARD_LABEL);
51 [_viewController setTitle:title]; 51 [_viewController setTitle:title];
52 if (_creditCard && !_creditCard->billing_address_id().empty())
53 [_viewController
54 setBillingAddressGUID:base::SysUTF8ToNSString(
55 _creditCard->billing_address_id())];
56 [_viewController setDelegate:self]; 52 [_viewController setDelegate:self];
57 [_viewController setValidatorDelegate:self]; 53 [_viewController setValidatorDelegate:self];
58
59 _mediator = [[CreditCardEditViewControllerMediator alloc] 54 _mediator = [[CreditCardEditViewControllerMediator alloc]
60 initWithPaymentRequest:_paymentRequest 55 initWithPaymentRequest:_paymentRequest
61 creditCard:_creditCard]; 56 creditCard:_creditCard];
62 [_mediator setState:_creditCard ? CreditCardEditViewControllerStateEdit
63 : CreditCardEditViewControllerStateCreate];
64 [_viewController setDataSource:_mediator]; 57 [_viewController setDataSource:_mediator];
65
66 [_viewController loadModel]; 58 [_viewController loadModel];
67 59
68 DCHECK(self.baseViewController.navigationController); 60 DCHECK(self.baseViewController.navigationController);
69 [[self baseViewController].navigationController 61 [[self baseViewController].navigationController
70 pushViewController:_viewController 62 pushViewController:_viewController
71 animated:YES]; 63 animated:YES];
72 } 64 }
73 65
74 - (void)stop { 66 - (void)stop {
75 [_viewController.navigationController popViewControllerAnimated:YES]; 67 [_viewController.navigationController popViewControllerAnimated:YES];
76 _viewController = nil; 68 _viewController = nil;
77 } 69 }
78 70
79 #pragma mark - PaymentRequestEditViewControllerValidator 71 #pragma mark - PaymentRequestEditViewControllerValidator
80 72
81 - (NSString*)paymentRequestEditViewController: 73 - (NSString*)paymentRequestEditViewController:
82 (PaymentRequestEditViewController*)controller 74 (PaymentRequestEditViewController*)controller
83 validateValue:(NSString*)value 75 validateField:(EditorField*)field {
84 autofillUIType:(AutofillUIType)autofillUIType 76 if (field.value.length) {
85 required:(BOOL)required {
86 if (value.length) {
87 base::string16 errorMessage; 77 base::string16 errorMessage;
88 base::string16 valueString = base::SysNSStringToUTF16(value); 78 base::string16 valueString = base::SysNSStringToUTF16(field.value);
89 if (autofillUIType == AutofillUITypeCreditCardNumber) { 79 if (field.autofillUIType == AutofillUITypeCreditCardNumber) {
90 std::set<std::string> supportedCardNetworks( 80 std::set<std::string> supportedCardNetworks(
91 _paymentRequest->supported_card_networks().begin(), 81 _paymentRequest->supported_card_networks().begin(),
92 _paymentRequest->supported_card_networks().end()); 82 _paymentRequest->supported_card_networks().end());
93 autofill::IsValidCreditCardNumberForBasicCardNetworks( 83 autofill::IsValidCreditCardNumberForBasicCardNetworks(
94 valueString, supportedCardNetworks, &errorMessage); 84 valueString, supportedCardNetworks, &errorMessage);
85 } else if (field.autofillUIType == AutofillUITypeCreditCardBillingAddress) {
86 // TODO(crbug.com/602666): More validation?
87 return nil;
95 } else { 88 } else {
96 autofill::IsValidForType(valueString, 89 autofill::IsValidForType(
97 AutofillTypeFromAutofillUIType(autofillUIType), 90 valueString, AutofillTypeFromAutofillUIType(field.autofillUIType),
98 &errorMessage); 91 &errorMessage);
99 } 92 }
100 return !errorMessage.empty() ? base::SysUTF16ToNSString(errorMessage) : nil; 93 return !errorMessage.empty() ? base::SysUTF16ToNSString(errorMessage) : nil;
101 } else if (required) { 94 } else if (field.isRequired) {
102 return l10n_util::GetNSString( 95 return l10n_util::GetNSString(
103 IDS_PAYMENTS_FIELD_REQUIRED_VALIDATION_MESSAGE); 96 IDS_PAYMENTS_FIELD_REQUIRED_VALIDATION_MESSAGE);
104 } 97 }
105 return nil; 98 return nil;
106 } 99 }
107 100
108 #pragma mark - CreditCardEditViewControllerDelegate 101 #pragma mark - CreditCardEditViewControllerDelegate
109 102
103 - (void)paymentRequestEditViewController:
104 (PaymentRequestEditViewController*)controller
105 didSelectField:(EditorField*)field {
106 if (field.autofillUIType == AutofillUITypeCreditCardBillingAddress) {
107 // TODO(crbug.com/602666): Display a list of billing addresses.
108 }
109 }
110
110 - (void)creditCardEditViewController:(CreditCardEditViewController*)controller 111 - (void)creditCardEditViewController:(CreditCardEditViewController*)controller
111 didFinishEditingFields:(NSArray<EditorField*>*)fields 112 didFinishEditingFields:(NSArray<EditorField*>*)fields
112 billingAddressID:(NSString*)billingAddressID
113 saveCreditCard:(BOOL)saveCreditCard { 113 saveCreditCard:(BOOL)saveCreditCard {
114 // Create an empty credit card. If a credit card is being edited, copy over 114 // Create an empty credit card. If a credit card is being edited, copy over
115 // the information. 115 // the information.
116 autofill::CreditCard creditCard("", autofill::kSettingsOrigin); 116 autofill::CreditCard creditCard("", autofill::kSettingsOrigin);
117 if (_creditCard) 117 if (_creditCard)
118 creditCard = *_creditCard; 118 creditCard = *_creditCard;
119 119
120 for (EditorField* field in fields) { 120 for (EditorField* field in fields) {
121 creditCard.SetRawInfo(AutofillTypeFromAutofillUIType(field.autofillUIType), 121 if (field.autofillUIType == AutofillUITypeCreditCardBillingAddress) {
122 base::SysNSStringToUTF16(field.value)); 122 creditCard.set_billing_address_id(base::SysNSStringToUTF8(field.value));
123 } else {
124 creditCard.SetRawInfo(
125 AutofillTypeFromAutofillUIType(field.autofillUIType),
126 base::SysNSStringToUTF16(field.value));
127 }
123 } 128 }
124 129
125 creditCard.set_billing_address_id(base::SysNSStringToUTF8(billingAddressID));
126
127 if (!_creditCard) { 130 if (!_creditCard) {
128 if (saveCreditCard) { 131 if (saveCreditCard) {
129 // The new credit card does not yet have a valid GUID. 132 // The new credit card does not yet have a valid GUID.
130 creditCard.set_guid(base::GenerateGUID()); 133 creditCard.set_guid(base::GenerateGUID());
131 _paymentRequest->GetPersonalDataManager()->AddCreditCard(creditCard); 134 _paymentRequest->GetPersonalDataManager()->AddCreditCard(creditCard);
132 } 135 }
133 136
134 // Add the credit card to the list of credit cards in |_paymentRequest|. 137 // Add the credit card to the list of credit cards in |_paymentRequest|.
135 _creditCard = _paymentRequest->AddCreditCard(creditCard); 138 _creditCard = _paymentRequest->AddCreditCard(creditCard);
136 } else { 139 } else {
(...skipping 12 matching lines...) Expand all
149 [_delegate creditCardEditCoordinator:self 152 [_delegate creditCardEditCoordinator:self
150 didFinishEditingCreditCard:_creditCard]; 153 didFinishEditingCreditCard:_creditCard];
151 } 154 }
152 155
153 - (void)creditCardEditViewControllerDidCancel: 156 - (void)creditCardEditViewControllerDidCancel:
154 (CreditCardEditViewController*)controller { 157 (CreditCardEditViewController*)controller {
155 [_delegate creditCardEditCoordinatorDidCancel:self]; 158 [_delegate creditCardEditCoordinatorDidCancel:self];
156 } 159 }
157 160
158 @end 161 @end
OLDNEW
« no previous file with comments | « no previous file | ios/chrome/browser/ui/payments/credit_card_edit_coordinator_unittest.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698