Home | History | Annotate | Download | only in autofill
      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