Index: chrome/browser/autofill/autofill_credit_card_model_mac.mm |
=================================================================== |
--- chrome/browser/autofill/autofill_credit_card_model_mac.mm (revision 0) |
+++ chrome/browser/autofill/autofill_credit_card_model_mac.mm (revision 0) |
@@ -0,0 +1,86 @@ |
+// Copyright (c) 2010 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#import "chrome/browser/autofill/autofill_credit_card_model_mac.h" |
+#include "app/l10n_util.h" |
+#include "base/sys_string_conversions.h" |
+#include "chrome/browser/autofill/credit_card.h" |
+#include "grit/generated_resources.h" |
+ |
+ |
+@implementation AutoFillCreditCardModel |
+ |
+@dynamic summary; |
+@synthesize label = label_; |
+@synthesize nameOnCard = nameOnCard_; |
+@synthesize creditCardNumber = creditCardNumber_; |
+@synthesize expirationMonth = expirationMonth_; |
+@synthesize expirationYear = expirationYear_; |
+@synthesize cvcCode = cvcCode_; |
+@synthesize billingAddress = billingAddress_; |
+@synthesize shippingAddress = shippingAddress_; |
+ |
+// Sets up the KVO dependency between "summary" and dependent fields. |
++ (NSSet*)keyPathsForValuesAffectingValueForKey:(NSString*)key { |
+ NSSet* keyPaths = [super keyPathsForValuesAffectingValueForKey:key]; |
+ |
+ if ([key isEqualToString:@"summary"]) { |
+ NSSet* affectingKeys = [NSSet setWithObjects:@"creditCardNumber", |
+ @"expirationMonth", @"expirationYear", nil]; |
+ keyPaths = [keyPaths setByAddingObjectsFromSet:affectingKeys]; |
+ } |
+ return keyPaths; |
+} |
+ |
+- (id)initWithCreditCard:(const CreditCard&)creditCard { |
+ if ((self = [super init])) { |
+ [self setLabel:SysUTF16ToNSString(creditCard.Label())]; |
+ [self setNameOnCard:SysUTF16ToNSString( |
+ creditCard.GetFieldText(AutoFillType(CREDIT_CARD_NAME)))]; |
+ [self setCreditCardNumber:SysUTF16ToNSString( |
+ creditCard.GetFieldText(AutoFillType(CREDIT_CARD_NUMBER)))]; |
+ [self setExpirationMonth:SysUTF16ToNSString( |
+ creditCard.GetFieldText(AutoFillType(CREDIT_CARD_EXP_MONTH)))]; |
+ [self setExpirationYear:SysUTF16ToNSString( |
+ creditCard.GetFieldText(AutoFillType(CREDIT_CARD_EXP_4_DIGIT_YEAR)))]; |
+ [self setCvcCode:SysUTF16ToNSString( |
+ creditCard.GetFieldText(AutoFillType(CREDIT_CARD_VERIFICATION_CODE)))]; |
+ } |
+ return self; |
+} |
+ |
+- (void)dealloc { |
+ [label_ release]; |
+ [nameOnCard_ release]; |
+ [creditCardNumber_ release]; |
+ [expirationMonth_ release]; |
+ [expirationYear_ release]; |
+ [cvcCode_ release]; |
+ [billingAddress_ release]; |
+ [shippingAddress_ release]; |
+ [super dealloc]; |
+} |
+ |
+- (NSString*)summary { |
+ // TODO(dhollowa): This has been pulled into cross platform code. |
+ // Will hook up in separate CL. See http://crbug.com/33029. |
+ return @""; |
+} |
+ |
+- (void)copyModelToCreditCard:(CreditCard*)creditCard { |
+ DCHECK(creditCard); |
+ creditCard->set_label(base::SysNSStringToUTF16([self label])); |
+ creditCard->SetInfo(AutoFillType(CREDIT_CARD_NAME), |
+ base::SysNSStringToUTF16([self nameOnCard])); |
+ creditCard->SetInfo(AutoFillType(CREDIT_CARD_NUMBER), |
+ base::SysNSStringToUTF16([self creditCardNumber])); |
+ creditCard->SetInfo(AutoFillType(CREDIT_CARD_EXP_MONTH), |
+ base::SysNSStringToUTF16([self expirationMonth])); |
+ creditCard->SetInfo(AutoFillType(CREDIT_CARD_EXP_4_DIGIT_YEAR), |
+ base::SysNSStringToUTF16([self expirationYear])); |
+ creditCard->SetInfo(AutoFillType(CREDIT_CARD_VERIFICATION_CODE), |
+ base::SysNSStringToUTF16([self cvcCode])); |
+} |
+ |
+@end |