From 31e8939491a4c1c21a70d8c9b46cbdce8cb0481d Mon Sep 17 00:00:00 2001 From: Jason Long Date: Thu, 26 Jan 2017 23:06:42 -0800 Subject: [PATCH] Move autofill-specific logic from EditText to TextView. Change-Id: I92725144d737ed182e6ece7018a9f8d075fb5ba7 Test: Manual --- core/java/android/widget/EditText.java | 23 ----------------------- core/java/android/widget/TextView.java | 20 ++++++++++++++++++++ 2 files changed, 20 insertions(+), 23 deletions(-) diff --git a/core/java/android/widget/EditText.java b/core/java/android/widget/EditText.java index 67067906cb66e..07ad872bd8f03 100644 --- a/core/java/android/widget/EditText.java +++ b/core/java/android/widget/EditText.java @@ -24,10 +24,7 @@ import android.text.TextUtils; import android.text.method.ArrowKeyMovementMethod; import android.text.method.MovementMethod; import android.util.AttributeSet; -import android.util.Log; import android.view.accessibility.AccessibilityNodeInfo; -import android.view.autofill.AutoFillType; -import android.view.autofill.AutoFillValue; /* * This is supposed to be a *very* thin veneer over TextView. @@ -158,24 +155,4 @@ public class EditText extends TextView { info.addAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_SET_TEXT); } } - - // TODO(b/33197203): add unit/CTS tests for auto-fill methods - - @Override - public void autoFill(AutoFillValue value) { - final CharSequence text = value.getTextValue(); - - if (text == null) { - Log.w(VIEW_LOG_TAG, "EditText.autoFill(): no text on AutoFillValue"); - return; - } - setText(text); - } - - @Override - public AutoFillType getAutoFillType() { - // TODO(b/33197203): ideally it should return a constant, but value returned by - // getInputType() can change. - return AutoFillType.forText(getInputType()); - } } diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index c0bec69ca4d73..a5fb572ea6ed6 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -137,6 +137,8 @@ import android.view.accessibility.AccessibilityManager; import android.view.accessibility.AccessibilityNodeInfo; import android.view.animation.AnimationUtils; import android.view.autofill.AutoFillManager; +import android.view.autofill.AutoFillType; +import android.view.autofill.AutoFillValue; import android.view.inputmethod.BaseInputConnection; import android.view.inputmethod.CompletionInfo; import android.view.inputmethod.CorrectionInfo; @@ -9753,6 +9755,24 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener structure.setHint(getHint()); } + // TODO(b/33197203): add unit/CTS tests for auto-fill methods + + @Override + public void autoFill(AutoFillValue value) { + final CharSequence text = value.getTextValue(); + + if (text != null && isTextEditable()) { + setText(text); + } + } + + @Override + public AutoFillType getAutoFillType() { + // TODO(b/33197203): ideally it should return a constant, but value returned by + // getInputType() can change. + return AutoFillType.forText(getInputType()); + } + /** @hide */ @Override public void onInitializeAccessibilityEventInternal(AccessibilityEvent event) {