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); |
+ } |
} |