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

Unified Diff: ios/chrome/browser/ui/settings/autofill_credit_card_edit_collection_view_controller.mm

Issue 2731293002: [Payment Request] Updates AutofillEditItem to reuse in Payment Request (Closed)
Patch Set: Addressed comments Created 3 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: ios/chrome/browser/ui/settings/autofill_credit_card_edit_collection_view_controller.mm
diff --git a/ios/chrome/browser/ui/settings/autofill_credit_card_edit_collection_view_controller.mm b/ios/chrome/browser/ui/settings/autofill_credit_card_edit_collection_view_controller.mm
index a7ed56ce5f59ea516f122e0646eec9e31390efb0..3c4ad8ab1cada4e4e68dce592c42ffa72541bbae 100644
--- a/ios/chrome/browser/ui/settings/autofill_credit_card_edit_collection_view_controller.mm
+++ b/ios/chrome/browser/ui/settings/autofill_credit_card_edit_collection_view_controller.mm
@@ -11,6 +11,7 @@
#include "base/mac/scoped_block.h"
#import "base/mac/scoped_nsobject.h"
#include "base/strings/sys_string_conversions.h"
+#include "components/autofill/core/browser/autofill_data_util.h"
#include "components/autofill/core/browser/credit_card.h"
#include "components/autofill/core/browser/field_types.h"
#include "components/autofill/core/browser/payments/payments_service_url.h"
@@ -22,6 +23,7 @@
#import "ios/chrome/browser/ui/commands/UIKit+ChromeExecuteCommand.h"
#include "ios/chrome/browser/ui/commands/ios_command_ids.h"
#import "ios/chrome/browser/ui/commands/open_url_command.h"
+#import "ios/chrome/browser/ui/settings/autofill_edit_collection_view_controller+protected.h"
#import "ios/chrome/browser/ui/settings/cells/autofill_edit_item.h"
#import "ios/chrome/browser/ui/settings/cells/copied_to_chrome_item.h"
#import "ios/chrome/browser/ui/uikit_ui_util.h"
@@ -35,6 +37,8 @@ namespace {
NSString* const kAutofillCreditCardEditCollectionViewId =
@"kAutofillCreditCardEditCollectionViewId";
+const CGFloat kCardTypeIconDimension = 30.0;
+
typedef NS_ENUM(NSInteger, SectionIdentifier) {
SectionIdentifierFields = kSectionIdentifierEnumZero,
SectionIdentifierCopiedToChrome,
@@ -156,6 +160,7 @@ typedef NS_ENUM(NSInteger, ItemType) {
: base::SysUTF16ToNSString(_creditCard.LastFourDigits());
cardNumberitem.textFieldEnabled = isEditing;
cardNumberitem.autofillType = autofill::CREDIT_CARD_NUMBER;
+ [self setCardTypeIconForItem:cardNumberitem];
[model addItem:cardNumberitem
toSectionWithIdentifier:SectionIdentifierFields];
@@ -193,6 +198,26 @@ typedef NS_ENUM(NSInteger, ItemType) {
}
}
+#pragma mark - UITextFieldDelegate
+
+- (void)textFieldDidEndEditing:(UITextField*)textField {
Mathieu 2017/03/06 20:14:06 On other platforms I'm pretty sure we show the ico
+ NSIndexPath* cellPath = [self indexPathForCurrentTextField];
+ DCHECK(cellPath);
+ NSIndexPath* itemPath = [NSIndexPath indexPathForItem:[cellPath row]
+ inSection:[cellPath section]];
+ AutofillEditItem* item = base::mac::ObjCCastStrict<AutofillEditItem>(
+ [self.collectionViewModel itemAtIndexPath:itemPath]);
+
+ if (item.autofillType == autofill::CREDIT_CARD_NUMBER)
+ [self setCardTypeIconForItem:item];
+
+ // Update the cell.
+ [self reconfigureCellsForItems:@[ item ]
+ inSectionWithIdentifier:SectionIdentifierFields];
+
+ [super textFieldDidEndEditing:textField];
+}
+
#pragma mark - MDCCollectionViewEditingDelegate
- (BOOL)collectionViewAllowsEditing:(UICollectionView*)collectionView {
@@ -270,4 +295,22 @@ typedef NS_ENUM(NSInteger, ItemType) {
[self reloadData];
}
+#pragma mark - Helper Methods
+
+- (void)setCardTypeIconForItem:(AutofillEditItem*)item {
+ const char* cardType = autofill::CreditCard::GetCreditCardType(
+ base::SysNSStringToUTF16(item.textFieldValue));
+ if (cardType != autofill::kGenericCard) {
+ int resourceID =
+ autofill::data_util::GetPaymentRequestData(cardType).icon_resource_id;
+ // Resize and set the card type icon.
+ CGFloat dimension = kCardTypeIconDimension;
+ item.cardTypeIcon =
+ ResizeImage(NativeImage(resourceID), CGSizeMake(dimension, dimension),
+ ProjectionMode::kAspectFillNoClipping);
+ } else {
+ item.cardTypeIcon = nil;
+ }
+}
+
@end
« no previous file with comments | « ios/chrome/browser/ui/settings/BUILD.gn ('k') | ios/chrome/browser/ui/settings/autofill_edit_collection_view_controller.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698