summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2021-05-01 07:51:21 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2021-05-01 07:51:21 +0000
commit096c8547d336f0f79ce5e42cb1d5c659e4e1ec27 (patch)
tree49a3dfab41bcc4814e767451235228eb8942e7e7
parente056f435b08d75e82eb6c431bc71d74ea6e9e216 (diff)
parent4baf2915d8b968fd36972146881c49384cfa5411 (diff)
Merge "Make IInputMethodManager#reportActivityViewAsync() truly async" into sc-dev
-rw-r--r--core/java/android/view/inputmethod/InputMethodManager.java5
-rw-r--r--core/java/com/android/internal/view/IInputMethodManager.aidl4
-rw-r--r--services/core/java/com/android/server/inputmethod/InputMethodManagerService.java15
-rw-r--r--services/core/java/com/android/server/inputmethod/MultiClientInputMethodManagerService.java5
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