Fix crash due to TextView.getText() returning null.
This CL ensures that a null text is not passed to TextClassificationHelper.reset(...) This CL does not handle the issue of TextView.getText() being null. Bug: 65682674 Test: none Change-Id: Id8bdc062ecf21cc14810586580fef9052672cfd8
This commit is contained in:
@@ -85,7 +85,8 @@ public final class SelectionActionModeHelper {
|
||||
mEditor = Preconditions.checkNotNull(editor);
|
||||
mTextView = mEditor.getTextView();
|
||||
mTextClassificationHelper = new TextClassificationHelper(
|
||||
mTextView.getTextClassifier(), mTextView.getText(),
|
||||
mTextView.getTextClassifier(),
|
||||
getText(mTextView),
|
||||
0, 1, mTextView.getTextLocales());
|
||||
mSelectionTracker = new SelectionTracker(mTextView);
|
||||
|
||||
@@ -99,7 +100,7 @@ public final class SelectionActionModeHelper {
|
||||
|
||||
public void startActionModeAsync(boolean adjustSelection) {
|
||||
mSelectionTracker.onOriginalSelection(
|
||||
mTextView.getText(),
|
||||
getText(mTextView),
|
||||
mTextView.getSelectionStart(),
|
||||
mTextView.getSelectionEnd(),
|
||||
mTextView.isTextEditable());
|
||||
@@ -197,7 +198,7 @@ public final class SelectionActionModeHelper {
|
||||
}
|
||||
|
||||
private void startActionMode(@Nullable SelectionResult result) {
|
||||
final CharSequence text = mTextView.getText();
|
||||
final CharSequence text = getText(mTextView);
|
||||
if (result != null && text instanceof Spannable) {
|
||||
Selection.setSelection((Spannable) text, result.mStart, result.mEnd);
|
||||
mTextClassification = result.mClassification;
|
||||
@@ -358,7 +359,9 @@ public final class SelectionActionModeHelper {
|
||||
}
|
||||
|
||||
private void resetTextClassificationHelper() {
|
||||
mTextClassificationHelper.reset(mTextView.getTextClassifier(), mTextView.getText(),
|
||||
mTextClassificationHelper.reset(
|
||||
mTextView.getTextClassifier(),
|
||||
getText(mTextView),
|
||||
mTextView.getSelectionStart(), mTextView.getSelectionEnd(),
|
||||
mTextView.getTextLocales());
|
||||
}
|
||||
@@ -467,7 +470,7 @@ public final class SelectionActionModeHelper {
|
||||
if (isSelectionStarted()
|
||||
&& mAllowReset
|
||||
&& textIndex >= mSelectionStart && textIndex <= mSelectionEnd
|
||||
&& textView.getText() instanceof Spannable) {
|
||||
&& getText(textView) instanceof Spannable) {
|
||||
mAllowReset = false;
|
||||
boolean selected = editor.selectCurrentWord();
|
||||
if (selected) {
|
||||
@@ -723,7 +726,7 @@ public final class SelectionActionModeHelper {
|
||||
mSelectionResultSupplier = Preconditions.checkNotNull(selectionResultSupplier);
|
||||
mSelectionResultCallback = Preconditions.checkNotNull(selectionResultCallback);
|
||||
// Make a copy of the original text.
|
||||
mOriginalText = mTextView.getText().toString();
|
||||
mOriginalText = getText(mTextView).toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -739,7 +742,7 @@ public final class SelectionActionModeHelper {
|
||||
@Override
|
||||
@UiThread
|
||||
protected void onPostExecute(SelectionResult result) {
|
||||
result = TextUtils.equals(mOriginalText, mTextView.getText()) ? result : null;
|
||||
result = TextUtils.equals(mOriginalText, getText(mTextView)) ? result : null;
|
||||
mSelectionResultCallback.accept(result);
|
||||
}
|
||||
|
||||
@@ -888,4 +891,14 @@ public final class SelectionActionModeHelper {
|
||||
return SelectionEvent.ActionType.OTHER;
|
||||
}
|
||||
}
|
||||
|
||||
private static CharSequence getText(TextView textView) {
|
||||
// Extracts the textView's text.
|
||||
// TODO: Investigate why/when TextView.getText() is null.
|
||||
final CharSequence text = textView.getText();
|
||||
if (text != null) {
|
||||
return text;
|
||||
}
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user