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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/payments/CardEditor.java

Issue 2469103002: [Merge M-55] [Payments] Don't add expired cards in Payment Request. (Closed)
Patch Set: Created 4 years, 1 month 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
« no previous file with comments | « no previous file | chrome/android/java/src/org/chromium/chrome/browser/payments/PaymentRequestImpl.java » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/android/java/src/org/chromium/chrome/browser/payments/CardEditor.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/payments/CardEditor.java b/chrome/android/java/src/org/chromium/chrome/browser/payments/CardEditor.java
index e9e7a9bdb24f958a355d957d08d7ea74dd19df2e..4ee1d34efcee5c4dbcbdaa74cc9d94b2fee958ab 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/payments/CardEditor.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/payments/CardEditor.java
@@ -120,8 +120,11 @@ public class CardEditor extends EditorBase<AutofillPaymentInstrument>
@Nullable private EditorFieldModel mBillingAddressField;
@Nullable private EditorFieldModel mSaveCardCheckbox;
@Nullable private CreditCardScanner mCardScanner;
+ @Nullable private EditorFieldValidator mCardExpirationMonthValidator;
private boolean mCanScan;
private boolean mIsScanning;
+ private int mCurrentMonth;
+ private int mCurrentYear;
/**
* Builds a credit card editor.
@@ -403,10 +406,42 @@ public class CardEditor extends EditorBase<AutofillPaymentInstrument>
// Expiration month dropdown.
if (mMonthField == null) {
+ mCurrentYear = calendar.get(Calendar.YEAR);
+ // The month in calendar is 0 based but the month value is 1 based.
+ mCurrentMonth = calendar.get(Calendar.MONTH) + 1;
+
+ if (mCardExpirationMonthValidator == null) {
+ mCardExpirationMonthValidator = new EditorFieldValidator() {
+ @Override
+ public boolean isValid(@Nullable CharSequence monthValue) {
+ CharSequence yearValue = mYearField.getValue();
+ if (monthValue == null || yearValue == null) return false;
+
+ int month = Integer.parseInt(monthValue.toString());
+ int year = Integer.parseInt(yearValue.toString());
+
+ return year > mCurrentYear
+ || (year == mCurrentYear && month >= mCurrentMonth);
+ }
+ };
+ }
+
mMonthField = EditorFieldModel.createDropdown(
mContext.getString(R.string.autofill_credit_card_editor_expiration_date),
- buildMonthDropdownKeyValues(calendar));
+ buildMonthDropdownKeyValues(calendar),
+ mCardExpirationMonthValidator,
+ mContext.getString(
+ R.string.payments_card_expiration_invalid_validation_message));
mMonthField.setIsFullLine(false);
+
+ if (mObserverForTest != null) {
+ mMonthField.setDropdownCallback(new Callback<Pair<String, Runnable>>() {
+ @Override
+ public void onResult(final Pair<String, Runnable> eventData) {
+ mObserverForTest.onPaymentRequestServiceExpirationMonthChange();
+ }
+ });
+ }
}
if (mMonthField.getDropdownKeys().contains(card.getMonth())) {
mMonthField.setValue(card.getMonth());
« no previous file with comments | « no previous file | chrome/android/java/src/org/chromium/chrome/browser/payments/PaymentRequestImpl.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698