Merge "Update the fallback logic in BaseInputConnection#getSurroundingText()" into sc-dev

This commit is contained in:
TreeHugger Robot
2021-03-23 01:42:32 +00:00
committed by Android (Google) Code Review
2 changed files with 11 additions and 6 deletions

View File

@@ -608,7 +608,12 @@ public class BaseInputConnection implements InputConnection {
Preconditions.checkArgumentNonnegative(afterLength);
final Editable content = getEditable();
if (content == null) return null;
// If {@link #getEditable()} is null or {@code mEditable} is equal to {@link #getEditable()}
// (a.k.a, a fake editable), it means we cannot get valid content from the editable, so
// fallback to retrieve surrounding text from other APIs.
if (content == null || mEditable == content) {
return InputConnection.super.getSurroundingText(beforeLength, afterLength, flags);
}
int selStart = Selection.getSelectionStart(content);
int selEnd = Selection.getSelectionEnd(content);

View File

@@ -325,16 +325,16 @@ public interface InputConnection {
CharSequence textBeforeCursor = getTextBeforeCursor(beforeLength, flags);
if (textBeforeCursor == null) {
textBeforeCursor = "";
return null;
}
CharSequence textAfterCursor = getTextAfterCursor(afterLength, flags);
if (textAfterCursor == null) {
return null;
}
CharSequence selectedText = getSelectedText(flags);
if (selectedText == null) {
selectedText = "";
}
CharSequence textAfterCursor = getTextAfterCursor(afterLength, flags);
if (textAfterCursor == null) {
textAfterCursor = "";
}
CharSequence surroundingText =
TextUtils.concat(textBeforeCursor, selectedText, textAfterCursor);
return new SurroundingText(surroundingText, textBeforeCursor.length(),