Chromium Code Reviews| Index: components/autofill/core/browser/personal_data_manager_unittest.cc |
| diff --git a/components/autofill/core/browser/personal_data_manager_unittest.cc b/components/autofill/core/browser/personal_data_manager_unittest.cc |
| index 2a1b23db52fc1c27949428a1859cfb752853c0ec..6ced0386dc08ad6447012accca18677f0880ca50 100644 |
| --- a/components/autofill/core/browser/personal_data_manager_unittest.cc |
| +++ b/components/autofill/core/browser/personal_data_manager_unittest.cc |
| @@ -24,6 +24,7 @@ |
| #include "base/strings/utf_string_conversions.h" |
| #include "base/synchronization/waitable_event.h" |
| #include "base/test/histogram_tester.h" |
| +#include "base/test/scoped_feature_list.h" |
| #include "base/test/simple_test_clock.h" |
| #include "base/threading/thread_task_runner_handle.h" |
| #include "base/time/time.h" |
| @@ -3634,9 +3635,11 @@ TEST_F(PersonalDataManagerTest, |
| .WillOnce(QuitMainMessageLoop()); |
| base::RunLoop().Run(); |
| + bool isBankNameAvailable; |
| std::vector<Suggestion> suggestions = |
| - personal_data_->GetCreditCardSuggestions(AutofillType(CREDIT_CARD_NUMBER), |
| - base::ASCIIToUTF16("12345678")); |
| + personal_data_->GetCreditCardSuggestions( |
| + AutofillType(CREDIT_CARD_NUMBER), base::ASCIIToUTF16("12345678"), |
| + isBankNameAvailable); |
| // There should be no suggestions. |
| ASSERT_EQ(0U, suggestions.size()); |
| @@ -3646,12 +3649,14 @@ TEST_F(PersonalDataManagerTest, |
| TEST_F(PersonalDataManagerTest, GetCreditCardSuggestions_LocalCardsRanking) { |
| SetupReferenceLocalCreditCards(); |
| + bool isBankNameAvailable; |
| // Sublabel is card number when filling name (exact format depends on |
| // the platform, but the last 4 digits should appear). |
| std::vector<Suggestion> suggestions = |
| personal_data_->GetCreditCardSuggestions( |
| AutofillType(CREDIT_CARD_NAME_FULL), |
| - /* field_contents= */ base::string16()); |
| + /* field_contents= */ base::string16(), |
| + isBankNameAvailable); |
| ASSERT_EQ(3U, suggestions.size()); |
| // Ordered as expected. |
| @@ -3695,10 +3700,12 @@ TEST_F(PersonalDataManagerTest, |
| .WillOnce(QuitMainMessageLoop()); |
| base::RunLoop().Run(); |
| + bool isBankNameAvailable; |
| std::vector<Suggestion> suggestions = |
| personal_data_->GetCreditCardSuggestions( |
| AutofillType(CREDIT_CARD_NAME_FULL), |
| - /* field_contents= */ base::string16()); |
| + /* field_contents= */ base::string16(), |
| + isBankNameAvailable); |
| ASSERT_EQ(5U, suggestions.size()); |
| // All cards should be ordered as expected. |
| @@ -3748,10 +3755,12 @@ TEST_F(PersonalDataManagerTest, GetCreditCardSuggestions_ExpiredCards) { |
| ASSERT_EQ(3U, personal_data_->GetCreditCards().size()); |
| + bool isBankNameAvailable; |
| std::vector<Suggestion> suggestions = |
| personal_data_->GetCreditCardSuggestions( |
| AutofillType(CREDIT_CARD_NAME_FULL), |
| - /* field_contents= */ base::string16()); |
| + /* field_contents= */ base::string16(), |
| + isBankNameAvailable); |
| ASSERT_EQ(3U, suggestions.size()); |
| // The never used non expired card should be suggested first. |
| @@ -3795,10 +3804,12 @@ TEST_F(PersonalDataManagerTest, GetCreditCardSuggestions_NumberMissing) { |
| // Sublabel is expiration date when filling card number. The second card |
| // doesn't have a number so it should not be included in the suggestions. |
| + bool isBankNameAvailable; |
| std::vector<Suggestion> suggestions = |
| personal_data_->GetCreditCardSuggestions( |
| AutofillType(CREDIT_CARD_NUMBER), |
| - /* field_contents= */ base::string16()); |
| + /* field_contents= */ base::string16(), |
| + isBankNameAvailable); |
| ASSERT_EQ(1U, suggestions.size()); |
| EXPECT_EQ( |
| base::UTF8ToUTF16(std::string("Amex") + kUTF8MidlineEllipsis + "8555"), |
| @@ -3852,10 +3863,12 @@ TEST_F(PersonalDataManagerTest, GetCreditCardSuggestions_ServerDuplicates) { |
| .WillOnce(QuitMainMessageLoop()); |
| base::RunLoop().Run(); |
| + bool isBankNameAvailable; |
| std::vector<Suggestion> suggestions = |
| personal_data_->GetCreditCardSuggestions( |
| AutofillType(CREDIT_CARD_NAME_FULL), |
| - /* field_contents= */ base::string16()); |
| + /* field_contents= */ base::string16(), |
| + isBankNameAvailable); |
| ASSERT_EQ(4U, suggestions.size()); |
| EXPECT_EQ(base::ASCIIToUTF16("John Dillinger"), suggestions[0].value); |
| EXPECT_EQ(base::ASCIIToUTF16("Clyde Barrow"), suggestions[1].value); |
| @@ -3863,7 +3876,8 @@ TEST_F(PersonalDataManagerTest, GetCreditCardSuggestions_ServerDuplicates) { |
| EXPECT_EQ(base::ASCIIToUTF16("Bonnie Parker"), suggestions[3].value); |
| suggestions = personal_data_->GetCreditCardSuggestions( |
| - AutofillType(CREDIT_CARD_NUMBER), /* field_contents= */ base::string16()); |
| + AutofillType(CREDIT_CARD_NUMBER), /* field_contents= */ base::string16(), |
| + isBankNameAvailable); |
| ASSERT_EQ(4U, suggestions.size()); |
| EXPECT_EQ( |
| base::UTF8ToUTF16(std::string("Visa") + kUTF8MidlineEllipsis + "9012"), |
| @@ -3900,10 +3914,12 @@ TEST_F(PersonalDataManagerTest, |
| .WillOnce(QuitMainMessageLoop()); |
| base::RunLoop().Run(); |
| + bool isBankNameAvailable; |
| std::vector<Suggestion> suggestions = |
| personal_data_->GetCreditCardSuggestions( |
| AutofillType(CREDIT_CARD_NAME_FULL), |
| - /* field_contents= */ base::string16()); |
| + /* field_contents= */ base::string16(), |
| + isBankNameAvailable); |
| ASSERT_EQ(3U, suggestions.size()); |
| // Add a second dupe local card to make sure a full server card can be a dupe |
| @@ -3919,10 +3935,94 @@ TEST_F(PersonalDataManagerTest, |
| suggestions = personal_data_->GetCreditCardSuggestions( |
| AutofillType(CREDIT_CARD_NAME_FULL), |
| - /* field_contents= */ base::string16()); |
| + /* field_contents= */ base::string16(), |
| + isBankNameAvailable); |
| ASSERT_EQ(3U, suggestions.size()); |
| } |
| +// Tests that server cards have bank name when feature flag on. |
| +TEST_F(PersonalDataManagerTest, |
| + GetCreditCardSuggestions_ShowBankNameOfServerCards) { |
| + // Turn on feature flag. |
| + base::test::ScopedFeatureList scoped_feature_list_; |
| + scoped_feature_list_.InitAndEnableFeature(kAutofillCreditCardBankNameDisplay); |
| + |
| + EnableWalletCardImport(); |
| + SetupReferenceLocalCreditCards(); |
| + |
| + // Add some server cards. |
| + std::vector<CreditCard> server_cards; |
| + server_cards.push_back(CreditCard(CreditCard::MASKED_SERVER_CARD, "b459")); |
| + test::SetCreditCardInfo(&server_cards.back(), "Emmet Dalton", "2110", "12", |
| + "2999", "1"); |
| + server_cards.back().set_use_count(2); |
| + server_cards.back().set_use_date(AutofillClock::Now() - |
| + base::TimeDelta::FromDays(1)); |
| + server_cards.back().SetNetworkForMaskedCard(kVisaCard); |
| + server_cards.back().set_bank_name("Chase"); |
| + |
| + test::SetServerCreditCards(autofill_table_, server_cards); |
| + personal_data_->Refresh(); |
| + EXPECT_CALL(personal_data_observer_, OnPersonalDataChanged()) |
| + .WillOnce(QuitMainMessageLoop()); |
| + base::RunLoop().Run(); |
| + |
| + bool isBankNameAvailable; |
| + std::vector<Suggestion> suggestions = |
| + personal_data_->GetCreditCardSuggestions( |
| + AutofillType(CREDIT_CARD_NUMBER), |
| + /* field_contents= */ base::string16(), |
| + isBankNameAvailable); |
| + EXPECT_TRUE(isBankNameAvailable); |
| + ASSERT_EQ(4U, suggestions.size()); |
| + |
| + // All cards should be ordered as expected. |
| + EXPECT_EQ( |
| + base::UTF8ToUTF16(std::string("Visa") + kUTF8MidlineEllipsis + "9012"), |
| + suggestions[0].value); |
| + EXPECT_EQ( |
| + base::UTF8ToUTF16(std::string("Amex") + kUTF8MidlineEllipsis + "8555"), |
| + suggestions[1].value); |
| + EXPECT_EQ( |
| + base::UTF8ToUTF16(std::string("Chase") + kUTF8MidlineEllipsis + "2110"), |
| + suggestions[2].value); |
| + EXPECT_EQ(base::UTF8ToUTF16(std::string("Mastercard") + kUTF8MidlineEllipsis + |
| + "2109"), |
| + suggestions[3].value); |
| +} |
| + |
|
sebsg
2017/06/12 21:17:00
Can you add a test where the feature is enabled bu
Shanfeng
2017/06/12 23:34:58
Done.
|
| +// Tests that isBankNameAvailable is true even feature flag off. |
| +TEST_F(PersonalDataManagerTest, |
| + GetCreditCardSuggestions_IsBankNameAvailableTrueEvenIfFeatureOff) { |
| + EnableWalletCardImport(); |
| + SetupReferenceLocalCreditCards(); |
| + |
| + // Add some server cards. |
| + std::vector<CreditCard> server_cards; |
| + server_cards.push_back(CreditCard(CreditCard::MASKED_SERVER_CARD, "b459")); |
| + test::SetCreditCardInfo(&server_cards.back(), "Emmet Dalton", "2110", "12", |
| + "2999", "1"); |
| + server_cards.back().set_use_count(2); |
| + server_cards.back().set_use_date(AutofillClock::Now() - |
| + base::TimeDelta::FromDays(1)); |
| + server_cards.back().SetNetworkForMaskedCard(kVisaCard); |
| + server_cards.back().set_bank_name("Chase"); |
| + |
| + test::SetServerCreditCards(autofill_table_, server_cards); |
| + personal_data_->Refresh(); |
| + EXPECT_CALL(personal_data_observer_, OnPersonalDataChanged()) |
| + .WillOnce(QuitMainMessageLoop()); |
| + base::RunLoop().Run(); |
| + |
| + bool isBankNameAvailable; |
| + std::vector<Suggestion> suggestions = |
| + personal_data_->GetCreditCardSuggestions( |
| + AutofillType(CREDIT_CARD_NUMBER), |
| + /* field_contents= */ base::string16(), |
| + isBankNameAvailable); |
| + ASSERT_EQ(4U, suggestions.size()); |
| +} |
| + |
| // Tests that only the full server card is kept when deduping with a local |
| // duplicate of it. |
| TEST_F(PersonalDataManagerTest, |