From 78a23141be035dd069d4053f21ceb1cd189bdcf0 Mon Sep 17 00:00:00 2001 From: Wilson Wu Date: Wed, 28 Apr 2021 12:55:10 +0800 Subject: [PATCH] Make IInputMethodPrivilegedOperations to async (4/N) -. Remove VoidResultCallback of updateStatusIcon and let it be truly asynchronous. -. Rename this method to updateStatusIconAsync. Bug: 183587528 Test: atest CtsInputMethodTestCases Change-Id: Ic7759354ec06a3293ea370ab7afe7422eb2d9356 --- .../android/inputmethodservice/InputMethodService.java | 4 ++-- .../android/view/inputmethod/InputMethodManager.java | 5 +++-- .../inputmethod/IInputMethodPrivilegedOperations.aidl | 2 +- .../inputmethod/InputMethodPrivilegedOperations.java | 9 +++------ .../server/inputmethod/InputMethodManagerService.java | 6 ++---- 5 files changed, 11 insertions(+), 15 deletions(-) diff --git a/core/java/android/inputmethodservice/InputMethodService.java b/core/java/android/inputmethodservice/InputMethodService.java index 4b8e37c560616..86ad5fa6afec4 100644 --- a/core/java/android/inputmethodservice/InputMethodService.java +++ b/core/java/android/inputmethodservice/InputMethodService.java @@ -1941,12 +1941,12 @@ public class InputMethodService extends AbstractInputMethodService { public void showStatusIcon(@DrawableRes int iconResId) { mStatusIcon = iconResId; - mPrivOps.updateStatusIcon(getPackageName(), iconResId); + mPrivOps.updateStatusIconAsync(getPackageName(), iconResId); } public void hideStatusIcon() { mStatusIcon = 0; - mPrivOps.updateStatusIcon(null, 0); + mPrivOps.updateStatusIconAsync(null, 0); } /** diff --git a/core/java/android/view/inputmethod/InputMethodManager.java b/core/java/android/view/inputmethod/InputMethodManager.java index d6292caba3443..55a23f34c81e2 100644 --- a/core/java/android/view/inputmethod/InputMethodManager.java +++ b/core/java/android/view/inputmethod/InputMethodManager.java @@ -1383,7 +1383,8 @@ public final class InputMethodManager { */ @Deprecated public void showStatusIcon(IBinder imeToken, String packageName, @DrawableRes int iconId) { - InputMethodPrivilegedOperationsRegistry.get(imeToken).updateStatusIcon(packageName, iconId); + InputMethodPrivilegedOperationsRegistry.get( + imeToken).updateStatusIconAsync(packageName, iconId); } /** @@ -1393,7 +1394,7 @@ public final class InputMethodManager { */ @Deprecated public void hideStatusIcon(IBinder imeToken) { - InputMethodPrivilegedOperationsRegistry.get(imeToken).updateStatusIcon(null, 0); + InputMethodPrivilegedOperationsRegistry.get(imeToken).updateStatusIconAsync(null, 0); } /** diff --git a/core/java/com/android/internal/inputmethod/IInputMethodPrivilegedOperations.aidl b/core/java/com/android/internal/inputmethod/IInputMethodPrivilegedOperations.aidl index 436596611f83c..1a58dc4bae31d 100644 --- a/core/java/com/android/internal/inputmethod/IInputMethodPrivilegedOperations.aidl +++ b/core/java/com/android/internal/inputmethod/IInputMethodPrivilegedOperations.aidl @@ -39,7 +39,7 @@ oneway interface IInputMethodPrivilegedOperations { in IVoidResultCallback resultCallback); void hideMySoftInput(int flags, in IVoidResultCallback resultCallback); void showMySoftInput(int flags, in IVoidResultCallback resultCallback); - void updateStatusIcon(String packageName, int iconId, in IVoidResultCallback resultCallback); + void updateStatusIconAsync(String packageName, int iconId); void switchToPreviousInputMethod(in IBooleanResultCallback resultCallback); void switchToNextInputMethod(boolean onlyCurrentIme, in IBooleanResultCallback resultCallback); void shouldOfferSwitchingToNextInputMethod(in IBooleanResultCallback resultCallback); diff --git a/core/java/com/android/internal/inputmethod/InputMethodPrivilegedOperations.java b/core/java/com/android/internal/inputmethod/InputMethodPrivilegedOperations.java index 555488d68866b..8a9ea253e99bd 100644 --- a/core/java/com/android/internal/inputmethod/InputMethodPrivilegedOperations.java +++ b/core/java/com/android/internal/inputmethod/InputMethodPrivilegedOperations.java @@ -190,22 +190,19 @@ public final class InputMethodPrivilegedOperations { } /** - * Calls {@link IInputMethodPrivilegedOperations#updateStatusIcon(String, int, - * IVoidResultCallback)}. + * Calls {@link IInputMethodPrivilegedOperations#updateStatusIconAsync(String, int)}. * * @param packageName package name from which the status icon should be loaded * @param iconResId resource ID of the icon to be loaded */ @AnyThread - public void updateStatusIcon(String packageName, @DrawableRes int iconResId) { + public void updateStatusIconAsync(String packageName, @DrawableRes int iconResId) { final IInputMethodPrivilegedOperations ops = mOps.getAndWarnIfNull(); if (ops == null) { return; } try { - final Completable.Void value = Completable.createVoid(); - ops.updateStatusIcon(packageName, iconResId, ResultCallbacks.of(value)); - Completable.getResult(value); + ops.updateStatusIconAsync(packageName, iconResId); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } diff --git a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java index 94a5099b45dad..bc6790e06a1e0 100644 --- a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java +++ b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java @@ -6039,10 +6039,8 @@ public class InputMethodManagerService extends IInputMethodManager.Stub @BinderThread @Override - public void updateStatusIcon(String packageName, @DrawableRes int iconId, - IVoidResultCallback resultCallback) { - CallbackUtils.onResult(resultCallback, - () -> mImms.updateStatusIcon(mToken, packageName, iconId)); + public void updateStatusIconAsync(String packageName, @DrawableRes int iconId) { + mImms.updateStatusIcon(mToken, packageName, iconId); } @BinderThread