diff options
| author | 2021-05-01 07:51:21 +0000 | |
|---|---|---|
| committer | 2021-05-01 07:51:21 +0000 | |
| commit | 096c8547d336f0f79ce5e42cb1d5c659e4e1ec27 (patch) | |
| tree | 49a3dfab41bcc4814e767451235228eb8942e7e7 | |
| parent | e056f435b08d75e82eb6c431bc71d74ea6e9e216 (diff) | |
| parent | 4baf2915d8b968fd36972146881c49384cfa5411 (diff) | |
Merge "Make IInputMethodManager#reportActivityViewAsync() truly async" into sc-dev
4 files changed, 16 insertions, 13 deletions
diff --git a/core/java/android/view/inputmethod/InputMethodManager.java b/core/java/android/view/inputmethod/InputMethodManager.java index 6694b7eb9ac2..42985501d818 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 3b8f4405426e..e9efca37e707 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 418b9695b436..518c4287deab 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 69f293d056cb..bbf4b718414d 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 |