blob: 5ef889268d5659b52560926ae942aeab6773dc70 [file] [log] [blame]
// Copyright 2018 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.
#include "components/autofill/core/browser/test_data_creator.h"
#include "base/strings/stringprintf.h"
#include "base/strings/utf_string_conversions.h"
#include "components/autofill/core/browser/autofill_profile.h"
#include "components/autofill/core/browser/credit_card.h"
#include "components/autofill/core/common/autofill_clock.h"
#include "components/autofill/core/common/autofill_features.h"
namespace autofill {
namespace {
// Time delta to create test data.
base::TimeDelta DeletableUseDateDelta(
const base::TimeDelta& cc_deletion_delta) {
static base::TimeDelta delta =
cc_deletion_delta + base::TimeDelta::FromDays(5);
return delta;
}
base::TimeDelta DeletableExpiryDateDelta(
const base::TimeDelta& cc_deletion_delta) {
static base::TimeDelta delta =
cc_deletion_delta + base::TimeDelta::FromDays(45);
return delta;
}
} // namespace
TestDataCreator::TestDataCreator(base::TimeDelta cc_deletion_delta,
std::string app_locale)
: cc_deletion_delta_(cc_deletion_delta), app_locale_(app_locale) {}
void TestDataCreator::MaybeAddTestProfiles(
const base::RepeatingCallback<void(const AutofillProfile&)>&
add_profile_callback) {
if (has_created_test_addresses_ ||
!base::FeatureList::IsEnabled(features::kAutofillCreateDataForTest))
return;
has_created_test_addresses_ = true;
for (const auto& profile : GetTestProfiles()) {
add_profile_callback.Run(profile);
}
DLOG(WARNING) << this << " added fake autofill profiles.";
}
void TestDataCreator::MaybeAddTestCreditCards(
const base::RepeatingCallback<void(const CreditCard&)>& add_cc_callback) {
if (has_created_test_credit_cards_ ||
!base::FeatureList::IsEnabled(features::kAutofillCreateDataForTest))
return;
has_created_test_credit_cards_ = true;
for (const auto& credit_card : GetTestCreditCards()) {
add_cc_callback.Run(credit_card);
}
DLOG(WARNING) << this << " added fake credit cards.";
}
std::vector<AutofillProfile> TestDataCreator::GetTestProfiles() {
return {CreateBasicTestAddress(), CreateDisusedTestAddress(),
CreateDisusedDeletableTestAddress()};
}
std::vector<CreditCard> TestDataCreator::GetTestCreditCards() {
return {CreateBasicTestCreditCard(), CreateDisusedTestCreditCard(),
CreateDisusedDeletableTestCreditCard()};
}
AutofillProfile TestDataCreator::CreateBasicTestAddress() {
const base::Time use_date =
AutofillClock::Now() - base::TimeDelta::FromDays(20);
AutofillProfile profile;
profile.SetInfo(NAME_FULL, base::UTF8ToUTF16("John McTester"), app_locale_);
profile.SetInfo(COMPANY_NAME, base::UTF8ToUTF16("Test Inc."), app_locale_);
profile.SetInfo(EMAIL_ADDRESS,
base::UTF8ToUTF16("jmctester@fake.chromium.org"),
app_locale_);
profile.SetInfo(ADDRESS_HOME_LINE1, base::UTF8ToUTF16("123 Invented Street"),
app_locale_);
profile.SetInfo(ADDRESS_HOME_LINE2, base::UTF8ToUTF16("Suite A"),
app_locale_);
profile.SetInfo(ADDRESS_HOME_CITY, base::UTF8ToUTF16("Mountain View"),
app_locale_);
profile.SetInfo(ADDRESS_HOME_STATE, base::UTF8ToUTF16("California"),
app_locale_);
profile.SetInfo(ADDRESS_HOME_ZIP, base::UTF8ToUTF16("94043"), app_locale_);
profile.SetInfo(ADDRESS_HOME_COUNTRY, base::UTF8ToUTF16("US"), app_locale_);
profile.SetInfo(PHONE_HOME_WHOLE_NUMBER, base::UTF8ToUTF16("844-555-0173"),
app_locale_);
profile.set_use_date(use_date);
return profile;
}
AutofillProfile TestDataCreator::CreateDisusedTestAddress() {
const base::Time use_date =
AutofillClock::Now() - base::TimeDelta::FromDays(185);
AutofillProfile profile;
profile.SetInfo(NAME_FULL, base::UTF8ToUTF16("Polly Disused"), app_locale_);
profile.SetInfo(COMPANY_NAME,
base::UTF8ToUTF16(base::StringPrintf(
"%lld Inc.", static_cast<long long>(use_date.ToTimeT()))),
app_locale_);
profile.SetInfo(EMAIL_ADDRESS,
base::UTF8ToUTF16("polly.disused@fake.chromium.org"),
app_locale_);
profile.SetInfo(ADDRESS_HOME_LINE1, base::UTF8ToUTF16("456 Disused Lane"),
app_locale_);
profile.SetInfo(ADDRESS_HOME_LINE2, base::UTF8ToUTF16("Apt. B"), app_locale_);
profile.SetInfo(ADDRESS_HOME_CITY, base::UTF8ToUTF16("Austin"), app_locale_);
profile.SetInfo(ADDRESS_HOME_STATE, base::UTF8ToUTF16("Texas"), app_locale_);
profile.SetInfo(ADDRESS_HOME_ZIP, base::UTF8ToUTF16("73301"), app_locale_);
profile.SetInfo(ADDRESS_HOME_COUNTRY, base::UTF8ToUTF16("US"), app_locale_);
profile.SetInfo(PHONE_HOME_WHOLE_NUMBER, base::UTF8ToUTF16("844-555-0174"),
app_locale_);
profile.set_use_date(use_date);
return profile;
}
AutofillProfile TestDataCreator::CreateDisusedDeletableTestAddress() {
const base::Time use_date =
AutofillClock::Now() - base::TimeDelta::FromDays(400);
AutofillProfile profile;
profile.SetInfo(NAME_FULL, base::UTF8ToUTF16("Polly Deletable"), app_locale_);
profile.SetInfo(COMPANY_NAME,
base::UTF8ToUTF16(base::StringPrintf(
"%lld Inc.", static_cast<long long>(use_date.ToTimeT()))),
app_locale_);
profile.SetInfo(EMAIL_ADDRESS,
base::UTF8ToUTF16("polly.deletable@fake.chromium.org"),
app_locale_);
profile.SetInfo(ADDRESS_HOME_LINE1, base::UTF8ToUTF16("459 Deletable Lane"),
app_locale_);
profile.SetInfo(ADDRESS_HOME_LINE2, base::UTF8ToUTF16("Apt. B"), app_locale_);
profile.SetInfo(ADDRESS_HOME_CITY, base::UTF8ToUTF16("Austin"), app_locale_);
profile.SetInfo(ADDRESS_HOME_STATE, base::UTF8ToUTF16("Texas"), app_locale_);
profile.SetInfo(ADDRESS_HOME_ZIP, base::UTF8ToUTF16("73301"), app_locale_);
profile.SetInfo(ADDRESS_HOME_COUNTRY, base::UTF8ToUTF16("US"), app_locale_);
profile.SetInfo(PHONE_HOME_WHOLE_NUMBER, base::UTF8ToUTF16("844-555-0274"),
app_locale_);
profile.set_use_date(use_date);
return profile;
}
// Create a card expiring 500 days from now which was last used 10 days ago.
CreditCard TestDataCreator::CreateBasicTestCreditCard() {
const base::Time now = AutofillClock::Now();
const base::Time use_date = now - base::TimeDelta::FromDays(10);
base::Time::Exploded expiry_date;
(now + base::TimeDelta::FromDays(500)).LocalExplode(&expiry_date);
CreditCard credit_card;
credit_card.SetInfo(CREDIT_CARD_NAME_FULL,
base::UTF8ToUTF16("Alice Testerson"), app_locale_);
credit_card.SetInfo(CREDIT_CARD_NUMBER, base::UTF8ToUTF16("4545454545454545"),
app_locale_);
credit_card.SetExpirationMonth(expiry_date.month);
credit_card.SetExpirationYear(expiry_date.year);
credit_card.set_use_date(use_date);
return credit_card;
}
CreditCard TestDataCreator::CreateDisusedTestCreditCard() {
const base::Time now = AutofillClock::Now();
const base::Time use_date = now - base::TimeDelta::FromDays(185);
base::Time::Exploded expiry_date;
(now - base::TimeDelta::FromDays(200)).LocalExplode(&expiry_date);
CreditCard credit_card;
credit_card.SetInfo(CREDIT_CARD_NAME_FULL, base::UTF8ToUTF16("Bob Disused"),
app_locale_);
credit_card.SetInfo(CREDIT_CARD_NUMBER, base::UTF8ToUTF16("4111111111111111"),
app_locale_);
credit_card.SetExpirationMonth(expiry_date.month);
credit_card.SetExpirationYear(expiry_date.year);
credit_card.set_use_date(use_date);
return credit_card;
}
CreditCard TestDataCreator::CreateDisusedDeletableTestCreditCard() {
const base::Time now = AutofillClock::Now();
const base::Time use_date = now - DeletableUseDateDelta(cc_deletion_delta_);
base::Time::Exploded expiry_date;
(now - DeletableExpiryDateDelta(cc_deletion_delta_))
.LocalExplode(&expiry_date);
CreditCard credit_card;
credit_card.SetInfo(CREDIT_CARD_NAME_FULL,
base::UTF8ToUTF16("Charlie Deletable"), app_locale_);
credit_card.SetInfo(CREDIT_CARD_NUMBER, base::UTF8ToUTF16("378282246310005"),
app_locale_);
credit_card.SetExpirationMonth(expiry_date.month);
credit_card.SetExpirationYear(expiry_date.year);
credit_card.set_use_date(use_date);
return credit_card;
}
} // namespace autofill