Merge "Make IInputMethodManager#reportActivityViewAsync() truly async" into sc-dev
diff --git a/core/java/android/view/inputmethod/InputMethodManager.java b/core/java/android/view/inputmethod/InputMethodManager.java
index 6694b7e..4298550 100644
--- a/core/java/android/view/inputmethod/InputMethodManager.java
+++ b/core/java/android/view/inputmethod/InputMethodManager.java
@@ -3106,10 +3106,7 @@
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 3b8f440..e9efca3 100644
--- a/core/java/com/android/internal/view/IInputMethodManager.aidl
+++ b/core/java/com/android/internal/view/IInputMethodManager.aidl
@@ -88,8 +88,8 @@
// 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 418b969..518c428 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 @@
}
@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 @@
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 69f293d..bbf4b71 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 @@
@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