Commit 5dbb05a3 authored by Sujie Zhu's avatar Sujie Zhu Committed by Commit Bot

[Nickname Management] Update CreditCard LabelPiece

Update the credit card LabelPiece (which is used as the text for settings
page  credit card list), so that when there is no card number, we can
fall back to nickname if nickname present.
For consistency with the autofill suggestion.

Bug: 1082013
Change-Id: I18f397513e98171f1d56f3eb0fe245767f2400f1
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2238898
Commit-Queue: Sujie Zhu <sujiezhu@google.com>
Reviewed-by: default avatarDominic Battré <battre@chromium.org>
Reviewed-by: default avatarSiyu An <siyua@chromium.org>
Reviewed-by: default avatarJared Saul <jsaul@google.com>
Cr-Commit-Position: refs/heads/master@{#777209}
parent 9e1be74b
...@@ -760,9 +760,16 @@ void CreditCard::SetExpirationDateFromString(const base::string16& text) { ...@@ -760,9 +760,16 @@ void CreditCard::SetExpirationDateFromString(const base::string16& text) {
const std::pair<base::string16, base::string16> CreditCard::LabelPieces() const std::pair<base::string16, base::string16> CreditCard::LabelPieces()
const { const {
base::string16 label; base::string16 label;
// No CC number, return name only. if (number().empty()) {
if (number().empty()) // No CC number, if valid nickname is present, return nickname only.
// Otherwise, return cardholder name only.
if (base::FeatureList::IsEnabled(
features::kAutofillEnableCardNicknameManagement) &&
HasValidNickname()) {
return std::make_pair(nickname_, base::string16());
}
return std::make_pair(name_on_card_, base::string16()); return std::make_pair(name_on_card_, base::string16());
}
base::string16 obfuscated_cc_number = base::string16 obfuscated_cc_number =
CardIdentifierStringForAutofillDisplay(); CardIdentifierStringForAutofillDisplay();
......
...@@ -101,9 +101,11 @@ TEST(CreditCardTest, GetObfuscatedStringForCardDigits) { ...@@ -101,9 +101,11 @@ TEST(CreditCardTest, GetObfuscatedStringForCardDigits) {
TEST(CreditCardTest, PreviewSummaryAndNetworkAndLastFourDigitsStrings) { TEST(CreditCardTest, PreviewSummaryAndNetworkAndLastFourDigitsStrings) {
base::test::ScopedFeatureList scoped_feature_list; base::test::ScopedFeatureList scoped_feature_list;
base::string16 valid_nickname = ASCIIToUTF16("My Visa Card"); base::string16 valid_nickname = ASCIIToUTF16("My Visa Card");
// Enable the flag. // Enable the flags.
scoped_feature_list.InitAndEnableFeature( scoped_feature_list.InitWithFeatures(
features::kAutofillEnableSurfacingServerCardNickname); /*enable_features=*/{features::kAutofillEnableSurfacingServerCardNickname,
features::kAutofillEnableCardNicknameManagement},
/*disable_features=*/{});
// Case 0: empty credit card. // Case 0: empty credit card.
CreditCard credit_card0(base::GenerateGUID(), "https://www.example.com/"); CreditCard credit_card0(base::GenerateGUID(), "https://www.example.com/");
...@@ -129,6 +131,16 @@ TEST(CreditCardTest, PreviewSummaryAndNetworkAndLastFourDigitsStrings) { ...@@ -129,6 +131,16 @@ TEST(CreditCardTest, PreviewSummaryAndNetworkAndLastFourDigitsStrings) {
base::string16 obfuscated1 = credit_card1.NetworkAndLastFourDigits(); base::string16 obfuscated1 = credit_card1.NetworkAndLastFourDigits();
EXPECT_EQ(ASCIIToUTF16(std::string("Card")), obfuscated1); EXPECT_EQ(ASCIIToUTF16(std::string("Card")), obfuscated1);
// Case 1.1: No credit card number, but has nickname.
CreditCard credit_card11(base::GenerateGUID(), "https://www.example.com/");
test::SetCreditCardInfo(&credit_card11, "John Dillinger", "", "01", "2010",
"1");
credit_card11.SetNickname(valid_nickname);
base::string16 summary11 = credit_card11.Label();
EXPECT_EQ(valid_nickname, summary11);
base::string16 obfuscated11 = credit_card11.NetworkAndLastFourDigits();
EXPECT_EQ(ASCIIToUTF16(std::string("Card")), obfuscated11);
// Case 2: No month. // Case 2: No month.
CreditCard credit_card2(base::GenerateGUID(), "https://www.example.com/"); CreditCard credit_card2(base::GenerateGUID(), "https://www.example.com/");
test::SetCreditCardInfo(&credit_card2, "John Dillinger", test::SetCreditCardInfo(&credit_card2, "John Dillinger",
...@@ -196,10 +208,12 @@ TEST(CreditCardTest, PreviewSummaryAndNetworkAndLastFourDigitsStrings) { ...@@ -196,10 +208,12 @@ TEST(CreditCardTest, PreviewSummaryAndNetworkAndLastFourDigitsStrings) {
summary6); summary6);
// Case 7: Have everything including nickname but flag is off. // Case 7: Have everything including nickname but flag is off.
// Reset and disable the feature flag. // Reset and disable the nickname feature flags.
scoped_feature_list.Reset(); scoped_feature_list.Reset();
scoped_feature_list.InitAndDisableFeature( scoped_feature_list.InitWithFeatures(
features::kAutofillEnableSurfacingServerCardNickname); /*enable_features=*/{}, /*disable_features=*/{
features::kAutofillEnableSurfacingServerCardNickname,
features::kAutofillEnableCardNicknameManagement});
CreditCard credit_card7(base::GenerateGUID(), "https://www.example.com/"); CreditCard credit_card7(base::GenerateGUID(), "https://www.example.com/");
test::SetCreditCardInfo(&credit_card7, "John Dillinger", test::SetCreditCardInfo(&credit_card7, "John Dillinger",
"5105 1051 0510 5100" /* Mastercard */, "01", "2010", "5105 1051 0510 5100" /* Mastercard */, "01", "2010",
...@@ -209,6 +223,16 @@ TEST(CreditCardTest, PreviewSummaryAndNetworkAndLastFourDigitsStrings) { ...@@ -209,6 +223,16 @@ TEST(CreditCardTest, PreviewSummaryAndNetworkAndLastFourDigitsStrings) {
EXPECT_EQ(UTF8ToUTF16(std::string("Mastercard ") + EXPECT_EQ(UTF8ToUTF16(std::string("Mastercard ") +
test::ObfuscatedCardDigitsAsUTF8("5100") + ", 01/2010"), test::ObfuscatedCardDigitsAsUTF8("5100") + ", 01/2010"),
summary7); summary7);
// Case 8: No credit card number, has valid nickname, but flag is off.
CreditCard credit_card8(base::GenerateGUID(), "https://www.example.com/");
test::SetCreditCardInfo(&credit_card8, "John Dillinger", "", "01", "2010",
"1");
credit_card8.SetNickname(valid_nickname);
base::string16 summary8 = credit_card11.Label();
EXPECT_EQ(base::string16(ASCIIToUTF16("John Dillinger")), summary8);
base::string16 obfuscated8 = credit_card8.NetworkAndLastFourDigits();
EXPECT_EQ(ASCIIToUTF16(std::string("Card")), obfuscated8);
} }
TEST(CreditCardTest, NicknameAndLastFourDigitsStrings) { TEST(CreditCardTest, NicknameAndLastFourDigitsStrings) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment