Commit 48d13fc5 authored by sandromaggi's avatar sandromaggi Committed by Commit Bot

[Autofill Assistant] Add new type of required credit card field

Some sites require a format of MM/YY which was previously not
available for required fields.

Bug: b/143266929
Change-Id: I68bc11b752d00a088e1514a7c0db1edfd4b7ff74
Bug: b/143266929
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1879892
Commit-Queue: Sandro Maggi <sandromaggi@google.com>
Reviewed-by: default avatarClemens Arbesser <arbesser@google.com>
Cr-Commit-Position: refs/heads/master@{#709450}
parent 3fea38ba
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include "base/bind.h" #include "base/bind.h"
#include "base/callback.h" #include "base/callback.h"
#include "base/strings/strcat.h"
#include "base/strings/string_number_conversions.h" #include "base/strings/string_number_conversions.h"
#include "base/strings/stringprintf.h" #include "base/strings/stringprintf.h"
#include "base/strings/utf_string_conversions.h" #include "base/strings/utf_string_conversions.h"
...@@ -160,6 +161,14 @@ std::string UseCreditCardAction::GetFallbackValue( ...@@ -160,6 +161,14 @@ std::string UseCreditCardAction::GetFallbackValue(
return fallback_data.card_number; return fallback_data.card_number;
break; break;
case UseCreditCardProto::RequiredField::CREDIT_CARD_EXP_MM_YY:
if (fallback_data.expiration_month > 0 &&
fallback_data.expiration_year > 0)
return base::StrCat(
{base::StringPrintf("%02d", fallback_data.expiration_month), "/",
base::StringPrintf("%02d", fallback_data.expiration_year % 100)});
break;
case UseCreditCardProto::RequiredField::UNDEFINED: case UseCreditCardProto::RequiredField::UNDEFINED:
NOTREACHED(); NOTREACHED();
return ""; return "";
......
...@@ -177,6 +177,9 @@ TEST_F(UseCreditCardActionTest, FillCreditCardWithFallback) { ...@@ -177,6 +177,9 @@ TEST_F(UseCreditCardActionTest, FillCreditCardWithFallback) {
AddRequiredField(&action, AddRequiredField(&action,
UseCreditCardProto::RequiredField::CREDIT_CARD_NUMBER, UseCreditCardProto::RequiredField::CREDIT_CARD_NUMBER,
"#card_number"); "#card_number");
AddRequiredField(&action,
UseCreditCardProto::RequiredField::CREDIT_CARD_EXP_MM_YY,
"#exp_month_year2");
// First validation fails. // First validation fails.
EXPECT_CALL(mock_web_controller_, OnGetFieldValue(Selector({"#cvc"}), _)) EXPECT_CALL(mock_web_controller_, OnGetFieldValue(Selector({"#cvc"}), _))
...@@ -193,6 +196,9 @@ TEST_F(UseCreditCardActionTest, FillCreditCardWithFallback) { ...@@ -193,6 +196,9 @@ TEST_F(UseCreditCardActionTest, FillCreditCardWithFallback) {
EXPECT_CALL(mock_web_controller_, EXPECT_CALL(mock_web_controller_,
OnGetFieldValue(Selector({"#card_number"}), _)) OnGetFieldValue(Selector({"#card_number"}), _))
.WillOnce(RunOnceCallback<1>(OkClientStatus(), "")); .WillOnce(RunOnceCallback<1>(OkClientStatus(), ""));
EXPECT_CALL(mock_web_controller_,
OnGetFieldValue(Selector({"#exp_month_year2"}), _))
.WillOnce(RunOnceCallback<1>(OkClientStatus(), ""));
// Expect fields to be filled // Expect fields to be filled
Expectation set_cvc = Expectation set_cvc =
...@@ -220,6 +226,10 @@ TEST_F(UseCreditCardActionTest, FillCreditCardWithFallback) { ...@@ -220,6 +226,10 @@ TEST_F(UseCreditCardActionTest, FillCreditCardWithFallback) {
mock_action_delegate_, mock_action_delegate_,
OnSetFieldValue(Selector({"#card_number"}), "4111111111111111", _)) OnSetFieldValue(Selector({"#card_number"}), "4111111111111111", _))
.WillOnce(RunOnceCallback<2>(OkClientStatus())); .WillOnce(RunOnceCallback<2>(OkClientStatus()));
Expectation set_exp_month_year2 =
EXPECT_CALL(mock_action_delegate_,
OnSetFieldValue(Selector({"#exp_month_year2"}), "09/24", _))
.WillOnce(RunOnceCallback<2>(OkClientStatus()));
// After fallback, second validation succeeds. // After fallback, second validation succeeds.
EXPECT_CALL(mock_web_controller_, OnGetFieldValue(Selector({"#cvc"}), _)) EXPECT_CALL(mock_web_controller_, OnGetFieldValue(Selector({"#cvc"}), _))
...@@ -242,6 +252,10 @@ TEST_F(UseCreditCardActionTest, FillCreditCardWithFallback) { ...@@ -242,6 +252,10 @@ TEST_F(UseCreditCardActionTest, FillCreditCardWithFallback) {
OnGetFieldValue(Selector({"#card_number"}), _)) OnGetFieldValue(Selector({"#card_number"}), _))
.After(set_expyear4) .After(set_expyear4)
.WillOnce(RunOnceCallback<1>(OkClientStatus(), "not empty")); .WillOnce(RunOnceCallback<1>(OkClientStatus(), "not empty"));
EXPECT_CALL(mock_web_controller_,
OnGetFieldValue(Selector({"#exp_month_year2"}), _))
.After(set_expyear4)
.WillOnce(RunOnceCallback<1>(OkClientStatus(), "not empty"));
autofill::CreditCard credit_card; autofill::CreditCard credit_card;
credit_card.SetExpirationMonth(9); credit_card.SetExpirationMonth(9);
......
...@@ -910,6 +910,7 @@ message UseCreditCardProto { ...@@ -910,6 +910,7 @@ message UseCreditCardProto {
CREDIT_CARD_EXP_4_DIGIT_YEAR = 4; CREDIT_CARD_EXP_4_DIGIT_YEAR = 4;
CREDIT_CARD_CARD_HOLDER_NAME = 5; CREDIT_CARD_CARD_HOLDER_NAME = 5;
CREDIT_CARD_NUMBER = 6; CREDIT_CARD_NUMBER = 6;
CREDIT_CARD_EXP_MM_YY = 7;
} }
optional CardField card_field = 1; optional CardField card_field = 1;
......
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