Chromium Code Reviews| Index: chrome/android/java/src/org/chromium/chrome/browser/payments/ui/EditorTextField.java |
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/payments/ui/EditorTextField.java b/chrome/android/java/src/org/chromium/chrome/browser/payments/ui/EditorTextField.java |
| index 0191d9eac846f08b0b084b28ed0ae6b4c100eff2..0af1963cfb010631ec40a7663f97d56b997b8a66 100644 |
| --- a/chrome/android/java/src/org/chromium/chrome/browser/payments/ui/EditorTextField.java |
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/payments/ui/EditorTextField.java |
| @@ -5,12 +5,14 @@ |
| package org.chromium.chrome.browser.payments.ui; |
| import android.content.Context; |
| -import android.telephony.PhoneNumberFormattingTextWatcher; |
| import android.text.Editable; |
| +import android.text.InputFilter; |
| import android.text.InputType; |
| import android.text.TextWatcher; |
| import android.view.LayoutInflater; |
| import android.view.View; |
| +import android.view.ViewGroup; |
| +import android.view.accessibility.AccessibilityEvent; |
| import android.widget.ArrayAdapter; |
| import android.widget.AutoCompleteTextView; |
| import android.widget.TextView.OnEditorActionListener; |
| @@ -20,21 +22,19 @@ import org.chromium.chrome.R; |
| import org.chromium.chrome.browser.payments.ui.PaymentRequestUI.PaymentRequestObserverForTest; |
| import org.chromium.chrome.browser.widget.CompatibilityTextInputLayout; |
| +import javax.annotation.Nullable; |
| + |
| /** Handles validation and display of one field from the {@link EditorFieldModel}. */ |
| @VisibleForTesting |
| -public class EditorTextField extends CompatibilityTextInputLayout { |
| - |
| - /** The indicator for input fields that are required. */ |
| - private static final String REQUIRED_FIELD_INDICATOR = "*"; |
| - |
| +public class EditorTextField extends CompatibilityTextInputLayout implements Validatable { |
| private EditorFieldModel mEditorFieldModel; |
| private AutoCompleteTextView mInput; |
| private boolean mHasFocusedAtLeastOnce; |
| - private PaymentRequestObserverForTest mObserverForTest; |
| + @Nullable private PaymentRequestObserverForTest mObserverForTest; |
| public EditorTextField(Context context, final EditorFieldModel fieldModel, |
| - OnEditorActionListener actionlistener, PhoneNumberFormattingTextWatcher formatter, |
| - PaymentRequestObserverForTest observer) { |
| + OnEditorActionListener actionlistener, @Nullable InputFilter filter, |
| + @Nullable TextWatcher formatter, @Nullable PaymentRequestObserverForTest observer) { |
| super(context); |
| assert fieldModel.getInputTypeHint() != EditorFieldModel.INPUT_TYPE_HINT_DROPDOWN; |
| mEditorFieldModel = fieldModel; |
| @@ -42,7 +42,7 @@ public class EditorTextField extends CompatibilityTextInputLayout { |
| // Build up the label. Required fields are indicated by appending a '*'. |
| CharSequence label = fieldModel.getLabel(); |
| - if (fieldModel.isRequired()) label = label + REQUIRED_FIELD_INDICATOR; |
| + if (fieldModel.isRequired()) label = label + EditorView.REQUIRED_FIELD_INDICATOR; |
| setHint(label); |
| // The EditText becomes a child of this class. The TextInputLayout manages how it looks. |
| @@ -91,7 +91,13 @@ public class EditorTextField extends CompatibilityTextInputLayout { |
| mInput.setThreshold(0); |
| } |
| + if (filter != null) mInput.setFilters(new InputFilter[] {filter}); |
| + if (formatter != null) mInput.addTextChangedListener(formatter); |
| + |
| switch (fieldModel.getInputTypeHint()) { |
| + case EditorFieldModel.INPUT_TYPE_HINT_CREDIT_CARD: |
| + mInput.setInputType(InputType.TYPE_CLASS_PHONE); |
|
gone
2016/07/13 21:13:01
TYPE_CLASS_PHONE? is that just to limit it to num
please use gerrit instead
2016/07/14 17:21:44
TYPE_CLASS_PHONE shows number keyboard with phone-
|
| + break; |
| case EditorFieldModel.INPUT_TYPE_HINT_PHONE: |
| mInput.setInputType(InputType.TYPE_CLASS_PHONE); |
| break; |
| @@ -139,12 +145,21 @@ public class EditorTextField extends CompatibilityTextInputLayout { |
| return mInput; |
| } |
| - /** |
| - * Updates the error display. |
| - * |
| - * @param showError If true, displays the error message. If false, clears it. |
| - */ |
| + @Override |
| + public boolean isValid() { |
| + return mEditorFieldModel.isValid(); |
| + } |
| + |
| + @Override |
| public void updateDisplayedError(boolean showError) { |
| setError(showError ? mEditorFieldModel.getErrorMessage() : null); |
| } |
| + |
| + @Override |
| + public void scrollToAndFocus() { |
| + ViewGroup parent = (ViewGroup) getParent(); |
| + if (parent != null) parent.requestChildFocus(this, this); |
| + requestFocus(); |
| + sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED); |
| + } |
| } |