Chromium Code Reviews| 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()); |