diff options
| author | TreeHugger Robot <treehugger-gerrit@google.com> | 2021-07-19 22:04:15 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2021-07-19 22:04:15 +0000 |
| commit | 75b51f31d4846c77ca6ec4f1977910e2e459323b (patch) | |
| tree | f949357fbac2d046511e1aa115732de8356d6190 /core/java | |
| parent | 53e843c44bd202f438c8fb86c9060f2ae65fc5c1 (diff) | |
| parent | 14add1cb743531a2b671e93fb1f321022150f4e0 (diff) | |
Merge "Use IBooleanResultCallback when appropriate in IInputContext"
Diffstat (limited to 'core/java')
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); |
