From cba800ef2f879a8e4bbd69754dd9a56012e5f842 Mon Sep 17 00:00:00 2001 From: Yohei Yukawa Date: Fri, 28 Oct 2022 19:53:46 -0700 Subject: [PATCH] Require TEST_INPUT_METHOD instead in IMM#addVirtualStylusIdForTestSession() This is a follow up CL to our previous CL [1], which introduced an @TestApi InputMethodManager#addVirtualStylusIdForTestSession(), which internally requires INJECT_EVENTS permission. Now that TEST_INPUT_METHOD is also available [2], let's require it instead of INJECT_EVENTS for better consistency with other test APIs defined in InputMethodManager. This CL also add @RequiresPermission(TEST_INPUT_METHOD) to InputMethodManager#addVirtualStylusIdForTestSession() to make it clear that it's guarded with the permission. [1]: I7399c0a56c04f024d65c16d459818cc2c5cdbc7f d96ef57bc4f87f82395c4eb456b4c11c6faf912b [2]: Ie79a3e9d41ce22605ae083594d639c37d08b7def b869c783808c4d4937727a1672b2fac81bace368 Bug: 256239860 Test: atest CtsInputMethodTestCases:StylusHandwritingTest Change-Id: Icdbb4ade2bd4b5066984e209efcf0ca93bfa08ca --- core/api/test-current.txt | 2 +- .../view/inputmethod/IInputMethodManagerGlobalInvoker.java | 1 + core/java/android/view/inputmethod/InputMethodManager.java | 1 + core/java/com/android/internal/view/IInputMethodManager.aidl | 4 ++-- .../android/server/inputmethod/InputMethodManagerService.java | 2 +- 5 files changed, 6 insertions(+), 4 deletions(-) diff --git a/core/api/test-current.txt b/core/api/test-current.txt index 80da6c13e02a1..8461fc1b7ae5e 100644 --- a/core/api/test-current.txt +++ b/core/api/test-current.txt @@ -3157,7 +3157,7 @@ package android.view.inputmethod { } public final class InputMethodManager { - method public void addVirtualStylusIdForTestSession(); + method @RequiresPermission(android.Manifest.permission.TEST_INPUT_METHOD) public void addVirtualStylusIdForTestSession(); method public int getDisplayId(); method @NonNull @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) public java.util.List getInputMethodListAsUser(int); method public boolean hasActiveInputConnection(@Nullable android.view.View); diff --git a/core/java/android/view/inputmethod/IInputMethodManagerGlobalInvoker.java b/core/java/android/view/inputmethod/IInputMethodManagerGlobalInvoker.java index 7f859d6b4bf4c..1afa98769a5a8 100644 --- a/core/java/android/view/inputmethod/IInputMethodManagerGlobalInvoker.java +++ b/core/java/android/view/inputmethod/IInputMethodManagerGlobalInvoker.java @@ -489,6 +489,7 @@ final class IInputMethodManagerGlobalInvoker { } @AnyThread + @RequiresPermission(Manifest.permission.TEST_INPUT_METHOD) static void addVirtualStylusIdForTestSession(IInputMethodClient client) { final IInputMethodManager service = getService(); if (service == null) { diff --git a/core/java/android/view/inputmethod/InputMethodManager.java b/core/java/android/view/inputmethod/InputMethodManager.java index f2ce739cdbeda..2bc4f5ecb0d04 100644 --- a/core/java/android/view/inputmethod/InputMethodManager.java +++ b/core/java/android/view/inputmethod/InputMethodManager.java @@ -2590,6 +2590,7 @@ public final class InputMethodManager { * @hide */ @TestApi + @RequiresPermission(Manifest.permission.TEST_INPUT_METHOD) public void addVirtualStylusIdForTestSession() { synchronized (mH) { IInputMethodManagerGlobalInvoker.addVirtualStylusIdForTestSession(mClient); diff --git a/core/java/com/android/internal/view/IInputMethodManager.aidl b/core/java/com/android/internal/view/IInputMethodManager.aidl index 423642acf2f7a..f7bb16e8ba54c 100644 --- a/core/java/com/android/internal/view/IInputMethodManager.aidl +++ b/core/java/com/android/internal/view/IInputMethodManager.aidl @@ -147,9 +147,9 @@ interface IInputMethodManager { boolean isStylusHandwritingAvailableAsUser(int userId); /** add virtual stylus id for test Stylus handwriting session **/ - @EnforcePermission("INJECT_EVENTS") + @EnforcePermission("TEST_INPUT_METHOD") @JavaPassthrough(annotation="@android.annotation.RequiresPermission(value = " - + "android.Manifest.permission.INJECT_EVENTS)") + + "android.Manifest.permission.TEST_INPUT_METHOD)") void addVirtualStylusIdForTestSession(in IInputMethodClient client); /** Set a stylus idle-timeout after which handwriting {@code InkWindow} will be removed. */ diff --git a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java index 9cb8f43c452ca..3e0ba5d95c921 100644 --- a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java +++ b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java @@ -4382,7 +4382,7 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub * a stylus deviceId is not already registered on device. */ @BinderThread - @EnforcePermission(Manifest.permission.INJECT_EVENTS) + @EnforcePermission(Manifest.permission.TEST_INPUT_METHOD) @Override public void addVirtualStylusIdForTestSession(IInputMethodClient client) { int uid = Binder.getCallingUid();