Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(412)

Unified Diff: chrome/browser/autofill/autofill_manager_unittest.cc

Issue 6033010: Support autocompletion for HTMl5 tags:"email", "month" and "tel". (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: unroll tests. Created 9 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/autofill/autofill_manager_unittest.cc
diff --git a/chrome/browser/autofill/autofill_manager_unittest.cc b/chrome/browser/autofill/autofill_manager_unittest.cc
index b4541432843268906f37f62fff19f16fe656a6c2..bd5aca9afaba502f19b2eabd77f7a17a781014f5 100644
--- a/chrome/browser/autofill/autofill_manager_unittest.cc
+++ b/chrome/browser/autofill/autofill_manager_unittest.cc
@@ -48,9 +48,9 @@ typedef Tuple5<int,
class TestPersonalDataManager : public PersonalDataManager {
public:
- TestPersonalDataManager() {
+ explicit TestPersonalDataManager(bool four_credit_cards) {
CreateTestAutoFillProfiles(&web_profiles_);
- CreateTestCreditCards(&credit_cards_);
+ CreateTestCreditCards(&credit_cards_, four_credit_cards);
}
virtual void InitializeIfNeeded() {}
@@ -112,23 +112,60 @@ class TestPersonalDataManager : public PersonalDataManager {
profiles->push_back(profile);
}
- void CreateTestCreditCards(ScopedVector<CreditCard>* credit_cards) {
- CreditCard* credit_card = new CreditCard;
- autofill_test::SetCreditCardInfo(credit_card, "First", "Elvis Presley",
- "4234567890123456", // Visa
- "04", "2012");
- credit_card->set_guid("00000000-0000-0000-0000-000000000004");
- credit_cards->push_back(credit_card);
- credit_card = new CreditCard;
- autofill_test::SetCreditCardInfo(credit_card, "Second", "Buddy Holly",
- "5187654321098765", // Mastercard
- "10", "2014");
- credit_card->set_guid("00000000-0000-0000-0000-000000000005");
- credit_cards->push_back(credit_card);
- credit_card = new CreditCard;
- autofill_test::SetCreditCardInfo(credit_card, "Empty", "", "", "", "");
- credit_card->set_guid("00000000-0000-0000-0000-000000000006");
- credit_cards->push_back(credit_card);
+ void CreateTestCreditCards(ScopedVector<CreditCard>* credit_cards,
+ bool four_credit_cards) {
+ if (!four_credit_cards) {
+ CreditCard* credit_card = new CreditCard;
+ autofill_test::SetCreditCardInfo(credit_card, "First", "Elvis Presley",
+ "4234567890123456", // Visa
dhollowa 2011/01/07 20:43:39 nit: indentation should be at open paren. And bel
+ "04", "2012");
+ credit_card->set_guid("00000000-0000-0000-0000-000000000004");
+ credit_cards->push_back(credit_card);
+ credit_card = new CreditCard;
+ autofill_test::SetCreditCardInfo(credit_card, "Second", "Buddy Holly",
+ "5187654321098765", // Mastercard
+ "10", "2014");
+ credit_card->set_guid("00000000-0000-0000-0000-000000000005");
+ credit_cards->push_back(credit_card);
+ credit_card = new CreditCard;
+ autofill_test::SetCreditCardInfo(credit_card, "Empty", "", "", "", "");
+ credit_card->set_guid("00000000-0000-0000-0000-000000000006");
+ credit_cards->push_back(credit_card);
+ } else {
+ // Create four credit cards with year month combination as following,
+ // 1. year empty, month empty
+ CreditCard* credit_card = new CreditCard;
+ autofill_test::SetCreditCardInfo(credit_card, "Miku0",
+ "Miku Hatsune",
+ "4234567890654321", // Visa
+ "", "");
+ credit_card->set_guid("00000000-0000-0000-0000-000000000007");
+ credit_cards->push_back(credit_card);
+ // 2. year empty, month non-empty
+ credit_card = new CreditCard;
+ autofill_test::SetCreditCardInfo(credit_card, "Miku1",
+ "Miku Hatsune",
+ "4234567890654321", // Visa
+ "04", "");
+ credit_card->set_guid("00000000-0000-0000-0000-000000000008");
+ credit_cards->push_back(credit_card);
+ // 3. year non-empty, month empty
+ credit_card = new CreditCard;
+ autofill_test::SetCreditCardInfo(credit_card, "Miku2",
+ "Miku Hatsune",
+ "4234567890654321", // Visa
+ "", "2012");
+ credit_card->set_guid("00000000-0000-0000-0000-000000000009");
+ credit_cards->push_back(credit_card);
+ // 4. both non-empty
+ credit_card = new CreditCard;
+ autofill_test::SetCreditCardInfo(credit_card, "Miku3",
+ "Miku Hatsune",
+ "4234567890654321", // Visa
+ "04", "2012");
+ credit_card->set_guid("00000000-0000-0000-0000-000000000010");
+ credit_cards->push_back(credit_card);
+ }
}
DISALLOW_COPY_AND_ASSIGN(TestPersonalDataManager);
@@ -181,12 +218,20 @@ void CreateTestAddressFormData(FormData* form) {
autofill_test::CreateTestFormField(
"Email", "email", "", "text", &field);
form->fields.push_back(field);
-}
+ autofill_test::CreateTestFormField(
+ "Email", "email2", "", "email", &field);
+ form->fields.push_back(field);
+ autofill_test::CreateTestFormField(
+ "Phone Number", "phonenumber2", "", "tel", &field);
+ form->fields.push_back(field);
+ }
// Populates |form| with data corresponding to a simple credit card form.
// Note that this actually appends fields to the form data, which can be useful
// for building up more complex test forms.
-void CreateTestCreditCardFormData(FormData* form, bool is_https) {
+void CreateTestCreditCardFormData(FormData* form,
+ bool is_https,
+ bool use_month_type) {
form->name = ASCIIToUTF16("MyForm");
form->method = ASCIIToUTF16("POST");
if (is_https) {
@@ -205,12 +250,18 @@ void CreateTestCreditCardFormData(FormData* form, bool is_https) {
autofill_test::CreateTestFormField(
"Card Number", "cardnumber", "", "text", &field);
form->fields.push_back(field);
- autofill_test::CreateTestFormField(
- "Expiration Date", "ccmonth", "", "text", &field);
- form->fields.push_back(field);
- autofill_test::CreateTestFormField(
- "", "ccyear", "", "text", &field);
- form->fields.push_back(field);
+ if (use_month_type) {
+ autofill_test::CreateTestFormField(
+ "Expiration Date", "ccmonth", "", "month", &field);
+ form->fields.push_back(field);
+ } else {
+ autofill_test::CreateTestFormField(
+ "Expiration Date", "ccmonth", "", "text", &field);
+ form->fields.push_back(field);
+ autofill_test::CreateTestFormField(
+ "", "ccyear", "", "text", &field);
+ form->fields.push_back(field);
+ }
}
void ExpectSuggestions(int page_id,
@@ -241,7 +292,7 @@ void ExpectSuggestions(int page_id,
// Verifies that the |filled_form| has been filled with the given data.
// Verifies address fields if |has_address_fields| is true, and verifies
// credit card fields if |has_credit_card_fields| is true. Verifies both if both
-// are true.
+// are true. |use_month_type| is used for credit card input month type.
void ExpectFilledForm(int page_id,
const FormData& filled_form,
int expected_page_id,
@@ -262,10 +313,11 @@ void ExpectFilledForm(int page_id,
const char* expiration_month,
const char* expiration_year,
bool has_address_fields,
- bool has_credit_card_fields) {
+ bool has_credit_card_fields,
+ int use_month_type) {
// The number of fields in the address and credit card forms created above.
- const size_t kAddressFormSize = 12;
- const size_t kCreditCardFormSize = 4;
+ const size_t kAddressFormSize = 14;
+ const size_t kCreditCardFormSize = use_month_type ? 3 : 4;
EXPECT_EQ(expected_page_id, page_id);
EXPECT_EQ(ASCIIToUTF16("MyForm"), filled_form.name);
@@ -324,7 +376,13 @@ void ExpectFilledForm(int page_id,
autofill_test::CreateTestFormField(
"Email", "email", email, "text", &field);
EXPECT_TRUE(field.StrictlyEqualsHack(filled_form.fields[11]));
- }
+ autofill_test::CreateTestFormField(
+ "Email", "email2", email, "email", &field);
+ EXPECT_TRUE(field.StrictlyEqualsHack(filled_form.fields[12]));
+ autofill_test::CreateTestFormField(
+ "Phone Number", "phonenumber2", phone, "tel", &field);
+ EXPECT_TRUE(field.StrictlyEqualsHack(filled_form.fields[13]));
+ }
if (has_credit_card_fields) {
size_t offset = has_address_fields? kAddressFormSize : 0;
@@ -334,12 +392,23 @@ void ExpectFilledForm(int page_id,
autofill_test::CreateTestFormField(
"Card Number", "cardnumber", card_number, "text", &field);
EXPECT_TRUE(field.StrictlyEqualsHack(filled_form.fields[offset + 1]));
- autofill_test::CreateTestFormField(
- "Expiration Date", "ccmonth", expiration_month, "text", &field);
- EXPECT_TRUE(field.StrictlyEqualsHack(filled_form.fields[offset + 2]));
- autofill_test::CreateTestFormField(
- "", "ccyear", expiration_year, "text", &field);
- EXPECT_TRUE(field.StrictlyEqualsHack(filled_form.fields[offset + 3]));
+ if (use_month_type) {
+ std::string exp_year = expiration_year;
+ std::string exp_month = expiration_month;
+ std::string year_month;
+ if (!exp_year.empty() && !exp_month.empty())
+ year_month = exp_year + "-" + exp_month;
+ autofill_test::CreateTestFormField("Expiration Date", "ccmonth",
+ year_month.c_str(), "month", &field);
+ EXPECT_TRUE(field.StrictlyEqualsHack(filled_form.fields[offset + 2]));
+ } else {
+ autofill_test::CreateTestFormField(
+ "Expiration Date", "ccmonth", expiration_month, "text", &field);
+ EXPECT_TRUE(field.StrictlyEqualsHack(filled_form.fields[offset + 2]));
+ autofill_test::CreateTestFormField(
+ "", "ccyear", expiration_year, "text", &field);
+ EXPECT_TRUE(field.StrictlyEqualsHack(filled_form.fields[offset + 3]));
+ }
}
}
@@ -351,7 +420,7 @@ void ExpectFilledAddressFormElvis(int page_id,
"Presley", "3734 Elvis Presley Blvd.", "Apt. 10", "Memphis",
"Tennessee", "38116", "USA", "12345678901", "",
"theking@gmail.com", "", "", "", "", true,
- has_credit_card_fields);
+ has_credit_card_fields, false);
}
void ExpectFilledCreditCardFormElvis(int page_id,
@@ -361,7 +430,19 @@ void ExpectFilledCreditCardFormElvis(int page_id,
ExpectFilledForm(page_id, filled_form, expected_page_id,
"", "", "", "", "", "", "", "", "", "", "", "",
"Elvis Presley", "4234567890123456", "04", "2012",
- has_address_fields, true);
+ has_address_fields, true, false);
+}
+
+void ExpectFilledCreditCardYearMonthWithYearMonth(int page_id,
+ const FormData& filled_form,
+ int expected_page_id,
+ bool has_address_fields,
+ const char* year,
+ const char* month) {
+ ExpectFilledForm(page_id, filled_form, expected_page_id,
+ "", "", "", "", "", "", "", "", "", "", "", "",
+ "Miku Hatsune", "4234567890654321", month, year,
+ has_address_fields, true, true);
}
class TestAutoFillManager : public AutoFillManager {
@@ -433,7 +514,7 @@ class AutoFillManagerTest : public RenderViewHostTestHarness {
virtual void SetUp() {
RenderViewHostTestHarness::SetUp();
- test_personal_data_ = new TestPersonalDataManager();
+ test_personal_data_ = new TestPersonalDataManager(false);
autofill_manager_.reset(new TestAutoFillManager(contents(),
test_personal_data_.get()));
}
@@ -733,7 +814,7 @@ TEST_F(AutoFillManagerTest, GetProfileSuggestionsMethodGet) {
TEST_F(AutoFillManagerTest, GetCreditCardSuggestionsEmptyValue) {
// Set up our form data.
FormData form;
- CreateTestCreditCardFormData(&form, true);
+ CreateTestCreditCardFormData(&form, true, false);
std::vector<FormData> forms(1, form);
autofill_manager_->FormsSeen(forms);
@@ -777,7 +858,7 @@ TEST_F(AutoFillManagerTest, GetCreditCardSuggestionsEmptyValue) {
TEST_F(AutoFillManagerTest, GetCreditCardSuggestionsMatchCharacter) {
// Set up our form data.
FormData form;
- CreateTestCreditCardFormData(&form, true);
+ CreateTestCreditCardFormData(&form, true, false);
std::vector<FormData> forms(1, form);
autofill_manager_->FormsSeen(forms);
@@ -814,7 +895,7 @@ TEST_F(AutoFillManagerTest, GetCreditCardSuggestionsMatchCharacter) {
TEST_F(AutoFillManagerTest, GetCreditCardSuggestionsNonCCNumber) {
// Set up our form data.
FormData form;
- CreateTestCreditCardFormData(&form, true);
+ CreateTestCreditCardFormData(&form, true, false);
std::vector<FormData> forms(1, form);
autofill_manager_->FormsSeen(forms);
@@ -858,7 +939,7 @@ TEST_F(AutoFillManagerTest, GetCreditCardSuggestionsNonCCNumber) {
TEST_F(AutoFillManagerTest, GetCreditCardSuggestionsNonHTTPS) {
// Set up our form data.
FormData form;
- CreateTestCreditCardFormData(&form, false);
+ CreateTestCreditCardFormData(&form, false, false);
std::vector<FormData> forms(1, form);
autofill_manager_->FormsSeen(forms);
@@ -925,7 +1006,7 @@ TEST_F(AutoFillManagerTest, GetAddressAndCreditCardSuggestions) {
// Set up our form data.
FormData form;
CreateTestAddressFormData(&form);
- CreateTestCreditCardFormData(&form, true);
+ CreateTestCreditCardFormData(&form, true, false);
std::vector<FormData> forms(1, form);
autofill_manager_->FormsSeen(forms);
@@ -1002,7 +1083,7 @@ TEST_F(AutoFillManagerTest, GetAddressAndCreditCardSuggestionsNonHttps) {
// Set up our form data.
FormData form;
CreateTestAddressFormData(&form);
- CreateTestCreditCardFormData(&form, false);
+ CreateTestCreditCardFormData(&form, false, false);
std::vector<FormData> forms(1, form);
autofill_manager_->FormsSeen(forms);
@@ -1268,7 +1349,7 @@ TEST_F(AutoFillManagerTest, FillAddressForm) {
TEST_F(AutoFillManagerTest, FillCreditCardForm) {
// Set up our form data.
FormData form;
- CreateTestCreditCardFormData(&form, true);
+ CreateTestCreditCardFormData(&form, true, false);
std::vector<FormData> forms(1, form);
autofill_manager_->FormsSeen(forms);
@@ -1283,12 +1364,120 @@ TEST_F(AutoFillManagerTest, FillCreditCardForm) {
ExpectFilledCreditCardFormElvis(page_id, results, kDefaultPageID, false);
}
+// Test that we correctly fill a credit card form with month input type.
+// 1. year empty, month empty
+TEST_F(AutoFillManagerTest, FillCreditCardFormNoYearNoMonth) {
+ // Same as the SetUp(), but generate 4 credit cards with year month
+ // combination.
+ RenderViewHostTestHarness::SetUp();
+ test_personal_data_ = new TestPersonalDataManager(true);
+ autofill_manager_.reset(new TestAutoFillManager(contents(),
+ test_personal_data_.get()));
+ // Set up our form data.
+ FormData form;
+ CreateTestCreditCardFormData(&form, true, true);
+ std::vector<FormData> forms(1, form);
+ autofill_manager_->FormsSeen(forms);
+
+ std::string guid = autofill_manager_->GetLabeledCreditCard("Miku0")->guid();
+ EXPECT_TRUE(autofill_manager_->FillAutoFillFormData(
+ kDefaultPageID, form, *form.fields.begin(),
+ autofill_manager_->PackGUIDs(guid, std::string())));
+
+ int page_id = 0;
+ FormData results;
+ EXPECT_TRUE(GetAutoFillFormDataFilledMessage(&page_id, &results));
+ ExpectFilledCreditCardYearMonthWithYearMonth(page_id, results,
+ kDefaultPageID, false, "", "");
+}
+
+// Test that we correctly fill a credit card form with month input type.
+// 2. year empty, month non-empty
+TEST_F(AutoFillManagerTest, FillCreditCardFormNoYearMonth) {
+ // Same as the SetUp(), but generate 4 credit cards with year month
+ // combination.
+ RenderViewHostTestHarness::SetUp();
+ test_personal_data_ = new TestPersonalDataManager(true);
+ autofill_manager_.reset(new TestAutoFillManager(contents(),
+ test_personal_data_.get()));
+ // Set up our form data.
+ FormData form;
+ CreateTestCreditCardFormData(&form, true, true);
+ std::vector<FormData> forms(1, form);
+ autofill_manager_->FormsSeen(forms);
+
+ std::string guid = autofill_manager_->GetLabeledCreditCard("Miku1")->guid();
+ EXPECT_TRUE(autofill_manager_->FillAutoFillFormData(
+ kDefaultPageID, form, *form.fields.begin(),
+ autofill_manager_->PackGUIDs(guid, std::string())));
+
+ int page_id = 0;
+ FormData results;
+ EXPECT_TRUE(GetAutoFillFormDataFilledMessage(&page_id, &results));
+ ExpectFilledCreditCardYearMonthWithYearMonth(page_id, results,
+ kDefaultPageID, false, "", "04");
+}
+
+// Test that we correctly fill a credit card form with month input type.
+// 3. year non-empty, month empty
+TEST_F(AutoFillManagerTest, FillCreditCardFormYearNoMonth) {
+ // Same as the SetUp(), but generate 4 credit cards with year month
+ // combination.
+ RenderViewHostTestHarness::SetUp();
+ test_personal_data_ = new TestPersonalDataManager(true);
+ autofill_manager_.reset(new TestAutoFillManager(contents(),
+ test_personal_data_.get()));
+ // Set up our form data.
+ FormData form;
+ CreateTestCreditCardFormData(&form, true, true);
+ std::vector<FormData> forms(1, form);
+ autofill_manager_->FormsSeen(forms);
+
+ std::string guid = autofill_manager_->GetLabeledCreditCard("Miku2")->guid();
+ EXPECT_TRUE(autofill_manager_->FillAutoFillFormData(
+ kDefaultPageID, form, *form.fields.begin(),
+ autofill_manager_->PackGUIDs(guid, std::string())));
+
+ int page_id = 0;
+ FormData results;
+ EXPECT_TRUE(GetAutoFillFormDataFilledMessage(&page_id, &results));
+ ExpectFilledCreditCardYearMonthWithYearMonth(page_id, results,
+ kDefaultPageID, false, "2012", "");
+}
+
+// Test that we correctly fill a credit card form with month input type.
+// 4. year non-empty, month empty
+TEST_F(AutoFillManagerTest, FillCreditCardFormYearMonth) {
+ // Same as the SetUp(), but generate 4 credit cards with year month
+ // combination.
+ RenderViewHostTestHarness::SetUp();
+ test_personal_data_ = new TestPersonalDataManager(true);
+ autofill_manager_.reset(new TestAutoFillManager(contents(),
+ test_personal_data_.get()));
+ // Set up our form data.
+ FormData form;
+ CreateTestCreditCardFormData(&form, true, true);
+ std::vector<FormData> forms(1, form);
+ autofill_manager_->FormsSeen(forms);
+
+ std::string guid = autofill_manager_->GetLabeledCreditCard("Miku3")->guid();
+ EXPECT_TRUE(autofill_manager_->FillAutoFillFormData(
+ kDefaultPageID, form, *form.fields.begin(),
+ autofill_manager_->PackGUIDs(guid, std::string())));
+
+ int page_id = 0;
+ FormData results;
+ EXPECT_TRUE(GetAutoFillFormDataFilledMessage(&page_id, &results));
+ ExpectFilledCreditCardYearMonthWithYearMonth(page_id, results,
+ kDefaultPageID, false, "2012", "04");
+}
+
// Test that we correctly fill a combined address and credit card form.
TEST_F(AutoFillManagerTest, FillAddressAndCreditCardForm) {
// Set up our form data.
FormData form;
CreateTestAddressFormData(&form);
- CreateTestCreditCardFormData(&form, true);
+ CreateTestCreditCardFormData(&form, true, false);
std::vector<FormData> forms(1, form);
autofill_manager_->FormsSeen(forms);
@@ -1329,7 +1518,7 @@ TEST_F(AutoFillManagerTest, FillAutoFilledForm) {
CreateTestAddressFormData(&form);
// Mark one of the address fields as autofilled.
form.fields[4].set_autofilled(true);
- CreateTestCreditCardFormData(&form, true);
+ CreateTestCreditCardFormData(&form, true, false);
std::vector<FormData> forms(1, form);
autofill_manager_->FormsSeen(forms);
@@ -1346,7 +1535,7 @@ TEST_F(AutoFillManagerTest, FillAutoFilledForm) {
SCOPED_TRACE("Address");
ExpectFilledForm(page_id, results, kDefaultPageID,
"Elvis", "", "", "", "", "", "", "", "", "", "", "",
- "", "", "", "", true, true);
+ "", "", "", "", true, true, false);
}
// Now fill the credit card data.
@@ -1384,7 +1573,7 @@ TEST_F(AutoFillManagerTest, FillAutoFilledForm) {
SCOPED_TRACE("Credit card 2");
ExpectFilledForm(page_id, results, kPageID3,
"", "", "", "", "", "", "", "", "", "", "", "",
- "", "", "", "2012", true, true);
+ "", "", "", "2012", true, true, false);
}
}

Powered by Google App Engine
This is Rietveld 408576698