Chromium Code Reviews| 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..98a8878cb2c061d2ae008e180cd7f9f93f644a92 100644 |
| --- a/chrome/browser/autofill/autofill_manager_unittest.cc |
| +++ b/chrome/browser/autofill/autofill_manager_unittest.cc |
| @@ -87,6 +87,39 @@ class TestPersonalDataManager : public PersonalDataManager { |
| credit_cards_.reset(); |
| } |
| + void CreateTestCreditCardsYearMonth() { |
|
Ilya Sherman
2011/01/10 20:08:48
As long as you're unrolling the loops, it would be
honten.org
2011/01/25 05:19:24
Done.
|
| + ClearCreditCards(); |
| + // 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); |
| + } |
| + |
| private: |
| void CreateTestAutoFillProfiles(ScopedVector<AutoFillProfile>* profiles) { |
| AutoFillProfile* profile = new AutoFillProfile; |
| @@ -115,14 +148,14 @@ class TestPersonalDataManager : public PersonalDataManager { |
| void CreateTestCreditCards(ScopedVector<CreditCard>* credit_cards) { |
| CreditCard* credit_card = new CreditCard; |
| autofill_test::SetCreditCardInfo(credit_card, "First", "Elvis Presley", |
| - "4234567890123456", // Visa |
| - "04", "2012"); |
| + "4234567890123456", // Visa |
| + "04", "2012"); |
|
Ilya Sherman
2011/01/10 20:08:48
nit: The indentation here was correct previously (
honten.org
2011/01/25 05:19:24
Done.
|
| 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"); |
| + "5187654321098765", // Mastercard |
| + "10", "2014"); |
| credit_card->set_guid("00000000-0000-0000-0000-000000000005"); |
| credit_cards->push_back(credit_card); |
| credit_card = new CreditCard; |
| @@ -181,12 +214,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 +246,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 +288,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 +309,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, |
| + bool 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 +372,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 +388,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 date; |
| + if (!exp_year.empty() && !exp_month.empty()) |
| + date = exp_year + "-" + exp_month; |
| + autofill_test::CreateTestFormField("Expiration Date", "ccmonth", |
| + date.c_str(), "month", &field); |
|
Ilya Sherman
2011/01/10 20:08:48
nit: Please use the same style as elsewhere in thi
honten.org
2011/01/25 05:19:24
Done.
|
| + 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 +416,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 +426,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 { |
| @@ -733,7 +810,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 +854,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 +891,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 +935,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 +1002,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 +1079,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 +1345,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 +1360,109 @@ 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) { |
| + // Replace test credit cards to generate 4 credit cards with year month |
| + // combination. |
| + test_personal_data_->CreateTestCreditCardsYearMonth(); |
|
Ilya Sherman
2011/01/10 20:08:48
Rather than creating all four cards within CreateT
honten.org
2011/01/25 05:19:24
Done.
|
| + // 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()))); |
|
Ilya Sherman
2011/01/10 20:08:48
nit: Each of these lines should be indented four s
honten.org
2011/01/25 05:19:24
Done.
|
| + |
| + 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. |
| + test_personal_data_->CreateTestCreditCardsYearMonth(); |
| + // 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. |
| + test_personal_data_->CreateTestCreditCardsYearMonth(); |
| + // 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. |
| + test_personal_data_->ClearCreditCards(); |
| + test_personal_data_->CreateTestCreditCardsYearMonth(); |
| + // 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 +1503,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 +1520,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 +1558,7 @@ TEST_F(AutoFillManagerTest, FillAutoFilledForm) { |
| SCOPED_TRACE("Credit card 2"); |
| ExpectFilledForm(page_id, results, kPageID3, |
| "", "", "", "", "", "", "", "", "", "", "", "", |
| - "", "", "", "2012", true, true); |
| + "", "", "", "2012", true, true, false); |
| } |
| } |