summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2021-07-19 22:04:15 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2021-07-19 22:04:15 +0000
commit75b51f31d4846c77ca6ec4f1977910e2e459323b (patch)
treef949357fbac2d046511e1aa115732de8356d6190 /core/java
parent53e843c44bd202f438c8fb86c9060f2ae65fc5c1 (diff)
parent14add1cb743531a2b671e93fb1f321022150f4e0 (diff)
Merge "Use IBooleanResultCallback when appropriate in IInputContext"
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/inputmethodservice/RemoteInputConnection.java12
-rw-r--r--core/java/com/android/internal/inputmethod/Completable.java18
-rw-r--r--core/java/com/android/internal/inputmethod/IInputContextInvoker.java12
-rw-r--r--core/java/com/android/internal/view/IInputConnectionWrapper.java13
-rw-r--r--core/java/com/android/internal/view/IInputContext.aidl5
5 files changed, 40 insertions, 20 deletions
diff --git a/core/java/android/inputmethodservice/RemoteInputConnection.java b/core/java/android/inputmethodservice/RemoteInputConnection.java
index c62e1b77d748..5a8687d78fd8 100644
--- a/core/java/android/inputmethodservice/RemoteInputConnection.java
+++ b/core/java/android/inputmethodservice/RemoteInputConnection.java
@@ -361,9 +361,9 @@ final class RemoteInputConnection implements InputConnection {
// This method is not implemented.
return false;
}
- final Completable.Int value = mInvoker.requestCursorUpdates(cursorUpdateMode);
- return Completable.getResultOrZero(value, TAG, "requestCursorUpdates()",
- mCancellationGroup, MAX_WAIT_TIME_MILLIS) != 0;
+ final Completable.Boolean value = mInvoker.requestCursorUpdates(cursorUpdateMode);
+ return Completable.getResultOrFalse(value, TAG, "requestCursorUpdates()",
+ mCancellationGroup, MAX_WAIT_TIME_MILLIS);
}
@AnyThread
@@ -397,9 +397,9 @@ final class RemoteInputConnection implements InputConnection {
inputMethodService.exposeContent(inputContentInfo, this);
}
- final Completable.Int value = mInvoker.commitContent(inputContentInfo, flags, opts);
- return Completable.getResultOrZero(
- value, TAG, "commitContent()", mCancellationGroup, MAX_WAIT_TIME_MILLIS) != 0;
+ final Completable.Boolean value = mInvoker.commitContent(inputContentInfo, flags, opts);
+ return Completable.getResultOrFalse(
+ value, TAG, "commitContent()", mCancellationGroup, MAX_WAIT_TIME_MILLIS);
}
/**
diff --git a/core/java/com/android/internal/inputmethod/Completable.java b/core/java/com/android/internal/inputmethod/Completable.java
index ba3a34334e86..b419e267ab0c 100644
--- a/core/java/com/android/internal/inputmethod/Completable.java
+++ b/core/java/com/android/internal/inputmethod/Completable.java
@@ -544,6 +544,24 @@ public final class Completable {
}
/**
+ * Await the result by the {@link Completable.Boolean}, and log it if there is no result after
+ * given timeout.
+ *
+ * @return the result once {@link ValueBase#onComplete()}
+ */
+ @AnyThread
+ public static boolean getResultOrFalse(@NonNull Completable.Boolean value, String tag,
+ @NonNull String methodName, @Nullable CancellationGroup cancellationGroup,
+ int maxWaitTime) {
+ final boolean timedOut = value.await(maxWaitTime, TimeUnit.MILLISECONDS, cancellationGroup);
+ if (value.hasValue()) {
+ return value.getValue();
+ }
+ logInternal(tag, methodName, timedOut, maxWaitTime, 0);
+ return false;
+ }
+
+ /**
* Await the result by the {@link Completable.Int}, and log it if there is no result after
* given timeout.
*
diff --git a/core/java/com/android/internal/inputmethod/IInputContextInvoker.java b/core/java/com/android/internal/inputmethod/IInputContextInvoker.java
index e9df9a1863ff..977f9a5a5110 100644
--- a/core/java/com/android/internal/inputmethod/IInputContextInvoker.java
+++ b/core/java/com/android/internal/inputmethod/IInputContextInvoker.java
@@ -474,13 +474,13 @@ public final class IInputContextInvoker {
* Invokes {@link IInputContext#requestCursorUpdates(int, IIntResultCallback)}.
*
* @param cursorUpdateMode {@code cursorUpdateMode} parameter to be passed.
- * @return {@link Completable.Int} that can be used to retrieve the invocation result.
+ * @return {@link Completable.Boolean} that can be used to retrieve the invocation result.
* {@link RemoteException} will be treated as an error.
*/
@AnyThread
@NonNull
- public Completable.Int requestCursorUpdates(int cursorUpdateMode) {
- final Completable.Int value = Completable.createInt();
+ public Completable.Boolean requestCursorUpdates(int cursorUpdateMode) {
+ final Completable.Boolean value = Completable.createBoolean();
try {
mIInputContext.requestCursorUpdates(cursorUpdateMode, ResultCallbacks.of(value));
} catch (RemoteException e) {
@@ -496,14 +496,14 @@ public final class IInputContextInvoker {
* @param inputContentInfo {@code inputContentInfo} parameter to be passed.
* @param flags {@code flags} parameter to be passed.
* @param opts {@code opts} parameter to be passed.
- * @return {@link Completable.Int} that can be used to retrieve the invocation result.
+ * @return {@link Completable.Boolean} that can be used to retrieve the invocation result.
* {@link RemoteException} will be treated as an error.
*/
@AnyThread
@NonNull
- public Completable.Int commitContent(InputContentInfo inputContentInfo, int flags,
+ public Completable.Boolean commitContent(InputContentInfo inputContentInfo, int flags,
Bundle opts) {
- final Completable.Int value = Completable.createInt();
+ final Completable.Boolean value = Completable.createBoolean();
try {
mIInputContext.commitContent(inputContentInfo, flags, opts, ResultCallbacks.of(value));
} catch (RemoteException e) {
diff --git a/core/java/com/android/internal/view/IInputConnectionWrapper.java b/core/java/com/android/internal/view/IInputConnectionWrapper.java
index 125ec0720cc4..9ae3ab2b0dd7 100644
--- a/core/java/com/android/internal/view/IInputConnectionWrapper.java
+++ b/core/java/com/android/internal/view/IInputConnectionWrapper.java
@@ -43,6 +43,7 @@ import android.view.inputmethod.InputMethodManager;
import android.view.inputmethod.SurroundingText;
import com.android.internal.annotations.GuardedBy;
+import com.android.internal.inputmethod.IBooleanResultCallback;
import com.android.internal.inputmethod.ICharSequenceResultCallback;
import com.android.internal.inputmethod.IExtractedTextResultCallback;
import com.android.internal.inputmethod.IIntResultCallback;
@@ -309,7 +310,7 @@ public final class IInputConnectionWrapper extends IInputContext.Stub {
dispatchMessage(obtainMessageOO(DO_PERFORM_PRIVATE_COMMAND, action, data));
}
- public void requestCursorUpdates(int cursorUpdateMode, IIntResultCallback callback) {
+ public void requestCursorUpdates(int cursorUpdateMode, IBooleanResultCallback callback) {
dispatchMessage(mH.obtainMessage(DO_REQUEST_CURSOR_UPDATES, cursorUpdateMode,
0 /* unused */, callback));
}
@@ -319,7 +320,7 @@ public final class IInputConnectionWrapper extends IInputContext.Stub {
}
public void commitContent(InputContentInfo inputContentInfo, int flags, Bundle opts,
- IIntResultCallback callback) {
+ IBooleanResultCallback callback) {
final SomeArgs args = SomeArgs.obtain();
args.arg1 = inputContentInfo;
args.arg2 = opts;
@@ -797,7 +798,7 @@ public final class IInputConnectionWrapper extends IInputContext.Stub {
case DO_REQUEST_CURSOR_UPDATES: {
Trace.traceBegin(Trace.TRACE_TAG_INPUT, "InputConnection#requestCursorUpdates");
try {
- final IIntResultCallback callback = (IIntResultCallback) msg.obj;
+ final IBooleanResultCallback callback = (IBooleanResultCallback) msg.obj;
final InputConnection ic = getInputConnection();
final boolean result;
if (ic == null || !isActive()) {
@@ -807,7 +808,7 @@ public final class IInputConnectionWrapper extends IInputContext.Stub {
result = ic.requestCursorUpdates(msg.arg1);
}
try {
- callback.onResult(result ? 1 : 0);
+ callback.onResult(result);
} catch (RemoteException e) {
Log.w(TAG, "Failed to return the result to requestCursorUpdates()."
+ " result=" + result, e);
@@ -854,7 +855,7 @@ public final class IInputConnectionWrapper extends IInputContext.Stub {
SomeArgs args = (SomeArgs) msg.obj;
Trace.traceBegin(Trace.TRACE_TAG_INPUT, "InputConnection#commitContent");
try {
- final IIntResultCallback callback = (IIntResultCallback) args.arg3;
+ final IBooleanResultCallback callback = (IBooleanResultCallback) args.arg3;
final InputConnection ic = getInputConnection();
final boolean result;
if (ic == null || !isActive()) {
@@ -871,7 +872,7 @@ public final class IInputConnectionWrapper extends IInputContext.Stub {
}
}
try {
- callback.onResult(result ? 1 : 0);
+ callback.onResult(result);
} catch (RemoteException e) {
Log.w(TAG, "Failed to return the result to commitContent()."
+ " result=" + result, e);
diff --git a/core/java/com/android/internal/view/IInputContext.aidl b/core/java/com/android/internal/view/IInputContext.aidl
index be1dbabdeab8..dd42c40edb49 100644
--- a/core/java/com/android/internal/view/IInputContext.aidl
+++ b/core/java/com/android/internal/view/IInputContext.aidl
@@ -23,6 +23,7 @@ import android.view.inputmethod.CorrectionInfo;
import android.view.inputmethod.ExtractedTextRequest;
import android.view.inputmethod.InputContentInfo;
+import com.android.internal.inputmethod.IBooleanResultCallback;
import com.android.internal.inputmethod.ICharSequenceResultCallback;
import com.android.internal.inputmethod.IExtractedTextResultCallback;
import com.android.internal.inputmethod.IIntResultCallback;
@@ -78,10 +79,10 @@ import com.android.internal.inputmethod.ISurroundingTextResultCallback;
void getSelectedText(int flags, ICharSequenceResultCallback callback);
- void requestCursorUpdates(int cursorUpdateMode, IIntResultCallback callback);
+ void requestCursorUpdates(int cursorUpdateMode, IBooleanResultCallback callback);
void commitContent(in InputContentInfo inputContentInfo, int flags, in Bundle opts,
- IIntResultCallback callback);
+ IBooleanResultCallback callback);
void getSurroundingText(int beforeLength, int afterLength, int flags,
ISurroundingTextResultCallback callback);