Merge "Preserve invocation order in RemoteInputConnection"
diff --git a/core/java/android/inputmethodservice/RemoteInputConnection.java b/core/java/android/inputmethodservice/RemoteInputConnection.java
index 657f842..ae97fe7 100644
--- a/core/java/android/inputmethodservice/RemoteInputConnection.java
+++ b/core/java/android/inputmethodservice/RemoteInputConnection.java
@@ -108,7 +108,11 @@
@Nullable
@AnyThread
public CharSequence getTextAfterCursor(@IntRange(from = 0) int length, int flags) {
- if (length < 0 || mCancellationGroup.isCanceled()) {
+ if (length < 0) {
+ // TODO: Should we throw an InvalidParameterException() based on targetSdkVersion?
+ Log.e(TAG, "length=" + length + " is invalid and always results in null result.");
+ }
+ if (mCancellationGroup.isCanceled()) {
return null;
}
@@ -132,7 +136,11 @@
@Nullable
@AnyThread
public CharSequence getTextBeforeCursor(@IntRange(from = 0) int length, int flags) {
- if (length < 0 || mCancellationGroup.isCanceled()) {
+ if (length < 0) {
+ // TODO: Should we throw an InvalidParameterException() based on targetSdkVersion?
+ Log.e(TAG, "length=" + length + " is invalid and always results in null result.");
+ }
+ if (mCancellationGroup.isCanceled()) {
return null;
}
@@ -185,7 +193,17 @@
@AnyThread
public SurroundingText getSurroundingText(
@IntRange(from = 0) int beforeLength, @IntRange(from = 0) int afterLength, int flags) {
- if (beforeLength < 0 || afterLength < 0 || mCancellationGroup.isCanceled()) {
+ if (beforeLength < 0) {
+ // TODO: Should we throw an InvalidParameterException() based on targetSdkVersion?
+ Log.e(TAG, "beforeLength=" + beforeLength
+ + " is invalid and always results in null result.");
+ }
+ if (afterLength < 0) {
+ // TODO: Should we throw an InvalidParameterException() based on targetSdkVersion?
+ Log.e(TAG, "afterLength=" + afterLength
+ + " is invalid and always results in null result.");
+ }
+ if (mCancellationGroup.isCanceled()) {
return null;
}
diff --git a/core/java/com/android/internal/inputmethod/RemoteInputConnectionImpl.java b/core/java/com/android/internal/inputmethod/RemoteInputConnectionImpl.java
index 29c1b1b..7a668fb 100644
--- a/core/java/com/android/internal/inputmethod/RemoteInputConnectionImpl.java
+++ b/core/java/com/android/internal/inputmethod/RemoteInputConnectionImpl.java
@@ -233,6 +233,11 @@
Log.w(TAG, "getTextAfterCursor on inactive InputConnection");
return null;
}
+ if (length < 0) {
+ Log.i(TAG, "Returning null to getTextAfterCursor due to an invalid length="
+ + length);
+ return null;
+ }
return ic.getTextAfterCursor(length, flags);
}, useImeTracing() ? result -> buildGetTextAfterCursorProto(length, flags, result) : null);
}
@@ -246,6 +251,11 @@
Log.w(TAG, "getTextBeforeCursor on inactive InputConnection");
return null;
}
+ if (length < 0) {
+ Log.i(TAG, "Returning null to getTextBeforeCursor due to an invalid length="
+ + length);
+ return null;
+ }
return ic.getTextBeforeCursor(length, flags);
}, useImeTracing() ? result -> buildGetTextBeforeCursorProto(length, flags, result) : null);
}
@@ -276,6 +286,16 @@
Log.w(TAG, "getSurroundingText on inactive InputConnection");
return null;
}
+ if (beforeLength < 0) {
+ Log.i(TAG, "Returning null to getSurroundingText due to an invalid"
+ + " beforeLength=" + beforeLength);
+ return null;
+ }
+ if (afterLength < 0) {
+ Log.i(TAG, "Returning null to getSurroundingText due to an invalid"
+ + " afterLength=" + afterLength);
+ return null;
+ }
return ic.getSurroundingText(beforeLength, afterLength, flags);
}, useImeTracing() ? result -> buildGetSurroundingTextProto(
beforeLength, afterLength, flags, result) : null);