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

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

Issue 2451303002: [Payments] Don't add expired cards in Payment Request. (Closed)
Patch Set: Created 4 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: 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 7e510b231483c784cbbb5066226326890bc01201..46047aa914c51433d2f4faf5b2744d42c4f345c1 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
@@ -404,12 +404,45 @@ public class CardEditor extends EditorBase<AutofillPaymentInstrument>
mNameField.setValue(card.getName());
editor.addField(mNameField);
+ // The expiration data validatior.
+ EditorFieldValidator cardExpirationValidator = new EditorFieldValidator() {
+ @Override
+ public boolean isValid(@Nullable CharSequence value) {
please use gerrit instead 2016/10/27 00:05:22 Please rename |value| to |unusedValue| so it's cle
sebsg 2016/10/27 14:38:00 Realized that now this validator is only used for
+ CharSequence monthValue = mMonthField.getValue();
+ CharSequence yearValue = mYearField.getValue();
+ if (monthValue == null || yearValue == null) {
+ return false;
+ } else {
+ Calendar now = Calendar.getInstance();
please use gerrit instead 2016/10/27 00:05:22 This can read from disk on UI thread, which will m
sebsg 2016/10/27 14:38:00 Done.
+ int currentYear = now.get(Calendar.YEAR);
+ int currentMonth = now.get(Calendar.MONTH) + 1; // Month is 0 based.
+ int month = Integer.parseInt(monthValue.toString());
+ int year = Integer.parseInt(yearValue.toString());
+
+ return year > currentYear
+ || (year == currentYear && month >= currentMonth);
+ }
+ }
+ };
+
// Expiration month dropdown.
if (mMonthField == null) {
mMonthField = EditorFieldModel.createDropdown(
mContext.getString(R.string.autofill_credit_card_editor_expiration_date),
- buildMonthDropdownKeyValues(calendar));
+ buildMonthDropdownKeyValues(calendar),
+ cardExpirationValidator,
+ mContext.getString(
+ R.string.payments_card_expiration_invalid_validation_message));
mMonthField.setIsFullLine(false);
+ mMonthField.setDropdownCallback(new Callback<Pair<String, Runnable>>() {
+ @Override
+ public void onResult(final Pair<String, Runnable> eventData) {
+ if (mObserverForTest != null) {
please use gerrit instead 2016/10/27 00:05:22 Surround lines 437-444 with "if (mObserverForTest
sebsg 2016/10/27 14:38:00 Done.
+ mObserverForTest.onPaymentRequestServiceExpirationMonthChangeProcessed();
+ }
+ }
+ });
+
}
if (mMonthField.getDropdownKeys().contains(card.getMonth())) {
mMonthField.setValue(card.getMonth());

Powered by Google App Engine
This is Rietveld 408576698