Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0f502cb1 authored by Abodunrinwa Toki's avatar Abodunrinwa Toki Committed by Android (Google) Code Review
Browse files

Merge "Prevent crashes when in insertion mode."

parents c068aa22 792d820c
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -201,7 +201,7 @@ final class TextClassifierImpl implements TextClassifier {
        Preconditions.checkArgument(text != null);
        Preconditions.checkArgument(startIndex >= 0);
        Preconditions.checkArgument(endIndex <= text.length());
        Preconditions.checkArgument(endIndex >= startIndex);
        Preconditions.checkArgument(endIndex > startIndex);
    }

    /**
+11 −4
Original line number Diff line number Diff line
@@ -60,14 +60,14 @@ final class SelectionActionModeHelper {
        mEditor = Preconditions.checkNotNull(editor);
        final TextView textView = mEditor.getTextView();
        mTextClassificationHelper = new TextClassificationHelper(
                textView.getTextClassifier(), textView.getText(),
                textView.getSelectionStart(), textView.getSelectionEnd());
                textView.getTextClassifier(), textView.getText(), 0, 1);
    }

    public void startActionModeAsync() {
        cancelAsyncTask();
        if (isNoOpTextClassifier()) {
        if (isNoOpTextClassifier() || !hasSelection()) {
            // No need to make an async call for a no-op TextClassifier.
            // Do not call the TextClassifier if there is no selection.
            startActionMode(null);
        } else {
            resetTextClassificationHelper();
@@ -84,8 +84,9 @@ final class SelectionActionModeHelper {

    public void invalidateActionModeAsync() {
        cancelAsyncTask();
        if (isNoOpTextClassifier()) {
        if (isNoOpTextClassifier() || !hasSelection()) {
            // No need to make an async call for a no-op TextClassifier.
            // Do not call the TextClassifier if there is no selection.
            invalidateActionMode(null);
        } else {
            resetTextClassificationHelper();
@@ -126,6 +127,11 @@ final class SelectionActionModeHelper {
        return mEditor.getTextView().getTextClassifier() == TextClassifier.NO_OP;
    }

    private boolean hasSelection() {
        final TextView textView = mEditor.getTextView();
        return textView.getSelectionEnd() > textView.getSelectionStart();
    }

    private void startActionMode(@Nullable SelectionResult result) {
        final TextView textView = mEditor.getTextView();
        final CharSequence text = textView.getText();
@@ -311,6 +317,7 @@ final class SelectionActionModeHelper {
                CharSequence text, int selectionStart, int selectionEnd) {
            mTextClassifier = Preconditions.checkNotNull(textClassifier);
            mText = Preconditions.checkNotNull(text).toString();
            Preconditions.checkArgument(selectionEnd > selectionStart);
            mSelectionStart = selectionStart;
            mSelectionEnd = selectionEnd;
        }