diff --git a/core/java/android/view/inputmethod/InputMethodManager.java b/core/java/android/view/inputmethod/InputMethodManager.java index 2794e0890b159..1b2d8b1d77916 100644 --- a/core/java/android/view/inputmethod/InputMethodManager.java +++ b/core/java/android/view/inputmethod/InputMethodManager.java @@ -2520,16 +2520,6 @@ public final class InputMethodManager { */ @Deprecated public boolean switchToLastInputMethod(IBinder imeToken) { - if (imeToken == null) { - // Note: null token is allowed for callers that have WRITE_SECURE_SETTINGS permission. - // Thus we cannot always rely on InputMethodPrivilegedOperationsRegistry unfortunately. - // TODO(Bug 114488811): Consider deprecating null token rule. - try { - return mService.switchToPreviousInputMethod(imeToken); - } catch (RemoteException e) { - throw e.rethrowFromSystemServer(); - } - } return InputMethodPrivilegedOperationsRegistry.get(imeToken).switchToPreviousInputMethod(); } diff --git a/core/java/com/android/internal/view/IInputMethodManager.aidl b/core/java/com/android/internal/view/IInputMethodManager.aidl index 42d73e3ad2cb2..a5c505dba4bca 100644 --- a/core/java/com/android/internal/view/IInputMethodManager.aidl +++ b/core/java/com/android/internal/view/IInputMethodManager.aidl @@ -74,8 +74,6 @@ interface IInputMethodManager { boolean notifySuggestionPicked(in SuggestionSpan span, String originalString, int index); InputMethodSubtype getCurrentInputMethodSubtype(); boolean setCurrentInputMethodSubtype(in InputMethodSubtype subtype); - // TODO(Bug 114488811): this can be removed once we deprecate special null token rule. - boolean switchToPreviousInputMethod(in IBinder token); void setAdditionalInputMethodSubtypes(String id, in InputMethodSubtype[] subtypes); // This is kept due to @UnsupportedAppUsage. // TODO(Bug 113914148): Consider removing this. diff --git a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java index a2559552c8362..30f572be26a33 100644 --- a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java +++ b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java @@ -3119,12 +3119,15 @@ public class InputMethodManagerService extends IInputMethodManager.Stub } } - @Override - public boolean switchToPreviousInputMethod(IBinder token) { + @BinderThread + private boolean switchToPreviousInputMethod(IBinder token) { if (!calledFromValidUser()) { return false; } synchronized (mMethodMap) { + if (!calledWithValidToken(token)) { + return false; + } final Pair lastIme = mSettings.getLastInputMethodAndSubtypeLocked(); final InputMethodInfo lastImi; if (lastIme != null) { diff --git a/services/core/java/com/android/server/inputmethod/MultiClientInputMethodManagerService.java b/services/core/java/com/android/server/inputmethod/MultiClientInputMethodManagerService.java index dcd2912fda688..128d4d49a39b7 100644 --- a/services/core/java/com/android/server/inputmethod/MultiClientInputMethodManagerService.java +++ b/services/core/java/com/android/server/inputmethod/MultiClientInputMethodManagerService.java @@ -1593,13 +1593,6 @@ public final class MultiClientInputMethodManagerService { return false; } - @BinderThread - @Override - public boolean switchToPreviousInputMethod(IBinder token) { - reportNotSupported(); - return false; - } - @BinderThread @Override public void setAdditionalInputMethodSubtypes(String imiId, InputMethodSubtype[] subtypes) {