summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Abodunrinwa Toki <toki@google.com> 2017-10-31 03:10:06 +0000
committer android-build-merger <android-build-merger@google.com> 2017-10-31 03:10:06 +0000
commitf247977cbec33dcf9d7b83e3a94b6411ce799ebf (patch)
treefe6e4f1d3084333cfd83b392b247c6e3c345a844
parentbd7101937a722264757ac3f7329216ac25449371 (diff)
parent66ca42d5ac529f7fe30a602b74a14905435fd01d (diff)
Merge "DO NOT MERGE Disable smart sharing for password fields." into oc-dev
am: 66ca42d5ac Change-Id: I0e57e666f790c94ddf04d304a633c835a99d3d69
-rw-r--r--core/java/android/widget/SelectionActionModeHelper.java16
-rw-r--r--core/java/android/widget/TextView.java2
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