1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "chrome/browser/autofill/autofill_common_test.h" 6 7 #include "base/utf_string_conversions.h" 8 #include "chrome/browser/autofill/autofill_profile.h" 9 #include "chrome/browser/autofill/credit_card.h" 10 #include "chrome/browser/password_manager/encryptor.h" 11 #include "chrome/browser/prefs/pref_service.h" 12 #include "chrome/browser/profiles/profile.h" 13 #include "chrome/common/pref_names.h" 14 #include "webkit/glue/form_field.h" 15 16 namespace autofill_test { 17 18 void CreateTestFormField(const char* label, 19 const char* name, 20 const char* value, 21 const char* type, 22 webkit_glue::FormField* field) { 23 *field = webkit_glue::FormField(ASCIIToUTF16(label), ASCIIToUTF16(name), 24 ASCIIToUTF16(value), ASCIIToUTF16(type), 0, 25 false); 26 } 27 28 inline void check_and_set( 29 FormGroup* profile, AutofillFieldType type, const char* value) { 30 if (value) 31 profile->SetInfo(type, ASCIIToUTF16(value)); 32 } 33 34 void SetProfileInfo(AutofillProfile* profile, 35 const char* first_name, const char* middle_name, 36 const char* last_name, const char* email, const char* company, 37 const char* address1, const char* address2, const char* city, 38 const char* state, const char* zipcode, const char* country, 39 const char* phone, const char* fax) { 40 check_and_set(profile, NAME_FIRST, first_name); 41 check_and_set(profile, NAME_MIDDLE, middle_name); 42 check_and_set(profile, NAME_LAST, last_name); 43 check_and_set(profile, EMAIL_ADDRESS, email); 44 check_and_set(profile, COMPANY_NAME, company); 45 check_and_set(profile, ADDRESS_HOME_LINE1, address1); 46 check_and_set(profile, ADDRESS_HOME_LINE2, address2); 47 check_and_set(profile, ADDRESS_HOME_CITY, city); 48 check_and_set(profile, ADDRESS_HOME_STATE, state); 49 check_and_set(profile, ADDRESS_HOME_ZIP, zipcode); 50 check_and_set(profile, ADDRESS_HOME_COUNTRY, country); 51 check_and_set(profile, PHONE_HOME_WHOLE_NUMBER, phone); 52 check_and_set(profile, PHONE_FAX_WHOLE_NUMBER, fax); 53 } 54 55 void SetProfileInfoWithGuid(AutofillProfile* profile, 56 const char* guid, const char* first_name, const char* middle_name, 57 const char* last_name, const char* email, const char* company, 58 const char* address1, const char* address2, const char* city, 59 const char* state, const char* zipcode, const char* country, 60 const char* phone, const char* fax) { 61 if (guid) 62 profile->set_guid(guid); 63 SetProfileInfo(profile, first_name, middle_name, last_name, email, 64 company, address1, address2, city, state, zipcode, country, 65 phone, fax); 66 } 67 68 void SetCreditCardInfo(CreditCard* credit_card, 69 const char* name_on_card, const char* card_number, 70 const char* expiration_month, const char* expiration_year) { 71 check_and_set(credit_card, CREDIT_CARD_NAME, name_on_card); 72 check_and_set(credit_card, CREDIT_CARD_NUMBER, card_number); 73 check_and_set(credit_card, CREDIT_CARD_EXP_MONTH, expiration_month); 74 check_and_set(credit_card, CREDIT_CARD_EXP_4_DIGIT_YEAR, expiration_year); 75 } 76 77 void DisableSystemServices(Profile* profile) { 78 // Use a mock Keychain rather than the OS one to store credit card data. 79 #if defined(OS_MACOSX) 80 Encryptor::UseMockKeychain(true); 81 #endif 82 83 // Disable auxiliary profiles for unit testing. These reach out to system 84 // services on the Mac. 85 if (profile) { 86 profile->GetPrefs()->SetBoolean(prefs::kAutofillAuxiliaryProfilesEnabled, 87 false); 88 } 89 } 90 91 } // namespace autofill_test 92