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

Unified Diff: components/autofill/core/browser/autofill_field_unittest.cc

Issue 622773002: [Autofill] Autofill fails to show suggestions for credit card split across fields. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Removed ObfuscatedCreditCardNumber() from AutofillManager. Created 6 years, 2 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: components/autofill/core/browser/autofill_field_unittest.cc
diff --git a/components/autofill/core/browser/autofill_field_unittest.cc b/components/autofill/core/browser/autofill_field_unittest.cc
index fa10822aa1c0210ac82fb724c0bd9faad825953d..d95af5fd67728df4ec7c45e33a05d2a2cf4db6e0 100644
--- a/components/autofill/core/browser/autofill_field_unittest.cc
+++ b/components/autofill/core/browser/autofill_field_unittest.cc
@@ -49,6 +49,32 @@ size_t GetNumberOffset(size_t index, const TestCase& test) {
return result;
}
+// Helper function to test |GetCreditCardNumberValue()|.
+void TestGetCreditCardNumberValue(const TestCase& test) {
+ size_t offset = 0;
+ for (size_t i = 0; i < test.total_spilts_; ++i) {
+ AutofillField cc_number_part;
+ cc_number_part.set_heuristic_type(CREDIT_CARD_NUMBER);
+ cc_number_part.max_length = test.splits_[i];
+ offset += (i == 0) ? 0 : test.splits_[i - 1];
+ cc_number_part.set_credit_card_number_offset(offset);
+
+ // Retrive the value for |cc_number_part|.
+ base::string16 actual = AutofillField::GetCreditCardNumberValue(
+ cc_number_part, ASCIIToUTF16(test.card_number_));
+
+ // Enforce the field's |max_length| constraint. Please note that, normally
+ // this would be handled on renderer, which is why it needs to be specially
+ // handled in the unit test.
+ actual = (offset < test.card_number_.length())
+ ? actual.substr(0, test.splits_[i])
+ : base::string16();
+
+ // Verify for expected results.
+ EXPECT_EQ(ASCIIToUTF16(test.expected_results_[i]), actual);
+ }
+}
+
TEST(AutofillFieldTest, Type) {
AutofillField field;
ASSERT_EQ(NO_SERVER_DATA, field.server_type());
@@ -622,5 +648,59 @@ TEST(AutofillFieldTest, FillCreditCardNumberWithUnequalSizeSplits) {
EXPECT_EQ(ASCIIToUTF16(test.card_number_), cc_number_full.value);
}
+TEST(AutofillFieldTest, GetCreditCardNumberValue_OffsetsLessThanDigits) {
+ TestCase test;
+ test.card_number_ = "5187654321098765";
+
+ // Offset for all card number input fields are less than the size of digits on
+ // the card.
+ size_t max_lengths[] = {4, 4, 4, 4};
+ std::string expectations[] = {"5187", "6543", "2109", "8765"};
+ test.total_spilts_ = arraysize(max_lengths);
+ test.splits_ =
+ std::vector<int>(max_lengths, max_lengths + arraysize(max_lengths));
+ test.expected_results_ = std::vector<std::string>(
+ expectations, expectations + arraysize(expectations));
+
+ // Verify against the expectations.
+ TestGetCreditCardNumberValue(test);
+}
+
+TEST(AutofillFieldTest, GetCreditCardNumberValue_OffsetsEqualsDigits) {
+ TestCase test;
+ test.card_number_ = "5187654321098765";
+
+ // Offset for second card number input field is equals to the size of digits
+ // on the card.
+ size_t max_lengths[] = {16, 4};
+ std::string expectations[] = {"5187654321098765", std::string()};
+ test.total_spilts_ = arraysize(max_lengths);
+ test.splits_ =
+ std::vector<int>(max_lengths, max_lengths + arraysize(max_lengths));
+ test.expected_results_ = std::vector<std::string>(
+ expectations, expectations + arraysize(expectations));
+
+ // Verify against the expectations.
+ TestGetCreditCardNumberValue(test);
+}
+
+TEST(AutofillFieldTest, GetCreditCardNumberValue_OffsetsGreaterThanDigits) {
+ TestCase test;
+ test.card_number_ = "5187654321098765";
+
+ // Offset for second card number input field is greater than the size of
+ // digits on the card.
+ size_t max_lengths[] = {20, 16};
+ std::string expectations[] = {"5187654321098765", std::string()};
+ test.total_spilts_ = arraysize(max_lengths);
+ test.splits_ =
+ std::vector<int>(max_lengths, max_lengths + arraysize(max_lengths));
+ test.expected_results_ = std::vector<std::string>(
+ expectations, expectations + arraysize(expectations));
+
+ // Verify against the expectations.
+ TestGetCreditCardNumberValue(test);
+}
+
} // namespace
} // namespace autofill

Powered by Google App Engine
This is Rietveld 408576698