diff --git a/core/java/android/view/inputmethod/InputMethodManager.java b/core/java/android/view/inputmethod/InputMethodManager.java index 6694b7eb9ac24..42985501d818c 100644 --- a/core/java/android/view/inputmethod/InputMethodManager.java +++ b/core/java/android/view/inputmethod/InputMethodManager.java @@ -3106,10 +3106,7 @@ public final class InputMethodManager { matrixValues = new float[9]; matrix.getValues(matrixValues); } - final Completable.Void value = Completable.createVoid(); - mService.reportActivityView( - mClient, childDisplayId, matrixValues, ResultCallbacks.of(value)); - Completable.getResult(value); + mService.reportActivityViewAsync(mClient, childDisplayId, matrixValues); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } diff --git a/core/java/com/android/internal/view/IInputMethodManager.aidl b/core/java/com/android/internal/view/IInputMethodManager.aidl index 3b8f4405426eb..e9efca37e707e 100644 --- a/core/java/com/android/internal/view/IInputMethodManager.aidl +++ b/core/java/com/android/internal/view/IInputMethodManager.aidl @@ -88,8 +88,8 @@ interface IInputMethodManager { // TODO(Bug 113914148): Consider removing this. oneway void getInputMethodWindowVisibleHeight(IIntResultCallback resultCallback); - oneway void reportActivityView(in IInputMethodClient parentClient, int childDisplayId, - in float[] matrixValues, in IVoidResultCallback resultCallback); + oneway void reportActivityViewAsync(in IInputMethodClient parentClient, int childDisplayId, + in float[] matrixValues); oneway void reportPerceptibleAsync(in IBinder windowToken, boolean perceptible); /** Remove the IME surface. Requires INTERNAL_SYSTEM_WINDOW permission. */ diff --git a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java index 418b9695b436a..518c4287deab6 100644 --- a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java +++ b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java @@ -4046,9 +4046,9 @@ public class InputMethodManagerService extends IInputMethodManager.Stub } @Override - public void reportActivityView(IInputMethodClient parentClient, int childDisplayId, - float[] matrixValues, IVoidResultCallback resultCallback) { - CallbackUtils.onResult(resultCallback, () -> { + public void reportActivityViewAsync(IInputMethodClient parentClient, int childDisplayId, + float[] matrixValues) { + try { final DisplayInfo displayInfo = mDisplayManagerInternal.getDisplayInfo(childDisplayId); if (displayInfo == null) { throw new IllegalArgumentException( @@ -4127,7 +4127,14 @@ public class InputMethodManagerService extends IInputMethodManager.Stub displayId = info.mParentClient.selfReportedDisplayId; } } - }); + } catch (Throwable t) { + if (parentClient != null) { + try { + parentClient.throwExceptionFromSystem(t.toString()); + } catch (RemoteException e) { + } + } + } } @Override diff --git a/services/core/java/com/android/server/inputmethod/MultiClientInputMethodManagerService.java b/services/core/java/com/android/server/inputmethod/MultiClientInputMethodManagerService.java index 69f293d056cb6..bbf4b718414d2 100644 --- a/services/core/java/com/android/server/inputmethod/MultiClientInputMethodManagerService.java +++ b/services/core/java/com/android/server/inputmethod/MultiClientInputMethodManagerService.java @@ -1864,10 +1864,9 @@ public final class MultiClientInputMethodManagerService { @BinderThread @Override - public void reportActivityView(IInputMethodClient parentClient, int childDisplayId, - float[] matrixValues, IVoidResultCallback resultCallback) { + public void reportActivityViewAsync(IInputMethodClient parentClient, int childDisplayId, + float[] matrixValues) { reportNotSupported(); - CallbackUtils.onResult(resultCallback, () -> { }); } @BinderThread