1dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file.
4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
5731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "chrome/browser/autofill/autofill_common_test.h"
6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "base/utf_string_conversions.h"
8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/autofill/autofill_profile.h"
9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/autofill/credit_card.h"
10731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "chrome/browser/password_manager/encryptor.h"
11731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "chrome/browser/prefs/pref_service.h"
1221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "chrome/browser/profiles/profile.h"
13731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "chrome/common/pref_names.h"
14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "webkit/glue/form_field.h"
15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
16731df977c0511bca2206b5f333555b1205ff1f43Iain Merricknamespace autofill_test {
17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid CreateTestFormField(const char* label,
19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                         const char* name,
20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                         const char* value,
21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                         const char* type,
22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                         webkit_glue::FormField* field) {
23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  *field = webkit_glue::FormField(ASCIIToUTF16(label), ASCIIToUTF16(name),
24201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                  ASCIIToUTF16(value), ASCIIToUTF16(type), 0,
25201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                  false);
26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochinline void check_and_set(
29dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    FormGroup* profile, AutofillFieldType type, const char* value) {
30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  if (value)
31ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    profile->SetInfo(type, ASCIIToUTF16(value));
32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
34ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid SetProfileInfo(AutofillProfile* profile,
35dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    const char* first_name, const char* middle_name,
36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    const char* last_name, const char* email, const char* company,
37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    const char* address1, const char* address2, const char* city,
38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    const char* state, const char* zipcode, const char* country,
39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    const char* phone, const char* fax) {
40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  check_and_set(profile, NAME_FIRST, first_name);
41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  check_and_set(profile, NAME_MIDDLE, middle_name);
42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  check_and_set(profile, NAME_LAST, last_name);
43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  check_and_set(profile, EMAIL_ADDRESS, email);
44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  check_and_set(profile, COMPANY_NAME, company);
45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  check_and_set(profile, ADDRESS_HOME_LINE1, address1);
46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  check_and_set(profile, ADDRESS_HOME_LINE2, address2);
47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  check_and_set(profile, ADDRESS_HOME_CITY, city);
48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  check_and_set(profile, ADDRESS_HOME_STATE, state);
49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  check_and_set(profile, ADDRESS_HOME_ZIP, zipcode);
50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  check_and_set(profile, ADDRESS_HOME_COUNTRY, country);
51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  check_and_set(profile, PHONE_HOME_WHOLE_NUMBER, phone);
52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  check_and_set(profile, PHONE_FAX_WHOLE_NUMBER, fax);
53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
55ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid SetProfileInfoWithGuid(AutofillProfile* profile,
563f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen    const char* guid, const char* first_name, const char* middle_name,
573f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen    const char* last_name, const char* email, const char* company,
583f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen    const char* address1, const char* address2, const char* city,
593f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen    const char* state, const char* zipcode, const char* country,
603f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen    const char* phone, const char* fax) {
613f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen  if (guid)
623f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen    profile->set_guid(guid);
63dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  SetProfileInfo(profile, first_name, middle_name, last_name, email,
643f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen                 company, address1, address2, city, state, zipcode, country,
653f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen                 phone, fax);
663f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen}
673f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen
68c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid SetCreditCardInfo(CreditCard* credit_card,
69dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    const char* name_on_card, const char* card_number,
70513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch    const char* expiration_month, const char* expiration_year) {
71c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  check_and_set(credit_card, CREDIT_CARD_NAME, name_on_card);
72c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  check_and_set(credit_card, CREDIT_CARD_NUMBER, card_number);
73c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  check_and_set(credit_card, CREDIT_CARD_EXP_MONTH, expiration_month);
74c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  check_and_set(credit_card, CREDIT_CARD_EXP_4_DIGIT_YEAR, expiration_year);
75c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
76c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
77731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickvoid DisableSystemServices(Profile* profile) {
78731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  // Use a mock Keychain rather than the OS one to store credit card data.
79731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#if defined(OS_MACOSX)
80731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  Encryptor::UseMockKeychain(true);
81731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#endif
82731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
83731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  // Disable auxiliary profiles for unit testing.  These reach out to system
84731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  // services on the Mac.
8572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  if (profile) {
86ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    profile->GetPrefs()->SetBoolean(prefs::kAutofillAuxiliaryProfilesEnabled,
8772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen                                    false);
8872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  }
89731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick}
90731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
91731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick}  // namespace autofill_test
92