diff options
| -rw-r--r-- | core/java/android/widget/SelectionActionModeHelper.java | 16 | ||||
| -rw-r--r-- | core/java/android/widget/TextView.java | 2 |
2 files changed, 13 insertions, 5 deletions
diff --git a/core/java/android/widget/SelectionActionModeHelper.java b/core/java/android/widget/SelectionActionModeHelper.java index 142412ac8ccb..227ef4cae275 100644 --- a/core/java/android/widget/SelectionActionModeHelper.java +++ b/core/java/android/widget/SelectionActionModeHelper.java @@ -68,7 +68,7 @@ final class SelectionActionModeHelper { public void startActionModeAsync(boolean adjustSelection) { cancelAsyncTask(); - if (isNoOpTextClassifier() || !hasSelection()) { + if (skipTextClassification()) { // No need to make an async call for a no-op TextClassifier. // Do not call the TextClassifier if there is no selection. startActionMode(null); @@ -88,7 +88,7 @@ final class SelectionActionModeHelper { public void invalidateActionModeAsync() { cancelAsyncTask(); - if (isNoOpTextClassifier() || !hasSelection()) { + if (skipTextClassification()) { // No need to make an async call for a no-op TextClassifier. // Do not call the TextClassifier if there is no selection. invalidateActionMode(null); @@ -132,8 +132,16 @@ final class SelectionActionModeHelper { mTextClassification = null; } - private boolean isNoOpTextClassifier() { - return mEditor.getTextView().getTextClassifier() == TextClassifier.NO_OP; + private boolean skipTextClassification() { + final TextView textView = mEditor.getTextView(); + // No need to make an async call for a no-op TextClassifier. + final boolean noOpTextClassifier = textView.getTextClassifier() == TextClassifier.NO_OP; + // Do not call the TextClassifier if there is no selection. + final boolean noSelection = textView.getSelectionEnd() == textView.getSelectionStart(); + // Do not call the TextClassifier if this is a password field. + final boolean password = textView.hasPasswordTransformationMethod() + || TextView.isPasswordInputType(textView.getInputType()); + return noOpTextClassifier || noSelection || password; } private boolean hasSelection() { diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index 9a924890fcd7..52fc6d930b16 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -5674,7 +5674,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener return mTransformation instanceof PasswordTransformationMethod; } - private static boolean isPasswordInputType(int inputType) { + static boolean isPasswordInputType(int inputType) { final int variation = inputType & (EditorInfo.TYPE_MASK_CLASS | EditorInfo.TYPE_MASK_VARIATION); return variation |