Clarify required permission in IMM#getInputMethodListAsUser()
This is a follow up CL to our previous CL [1], which exposed
InputMethodManager#getInputMethodListAsUser(int userId) [2]
as an @TestApi.
One thing to clarify is that INTERACT_ACROSS_USERS_FULL permission is
required when and only when "userId" is different from the one of the
calling process. To make it clear, this CL adds "conditional = true"
like other @RequiresPermission usages in InputMethodManager.
This is just about (Test) API annotation. There must be no observable
behavior change.
[1]: I4b73d9374d7a2ce4c9dfc48682a43d5d48b39042
ec8b1449f2
[2]: I5b50b5fe143c74c87b331bda3e5bcc4d6248436e
d20eef826c
Bug: 256239860
Test: presubmit
Change-Id: I14867e528d4292f1f8713b1d9b491fc5ed6c1abb
This commit is contained in:
@@ -3159,7 +3159,7 @@ package android.view.inputmethod {
|
||||
public final class InputMethodManager {
|
||||
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<android.view.inputmethod.InputMethodInfo> getInputMethodListAsUser(int);
|
||||
method @NonNull @RequiresPermission(value=android.Manifest.permission.INTERACT_ACROSS_USERS_FULL, conditional=true) public java.util.List<android.view.inputmethod.InputMethodInfo> getInputMethodListAsUser(int);
|
||||
method public boolean hasActiveInputConnection(@Nullable android.view.View);
|
||||
method @RequiresPermission(android.Manifest.permission.TEST_INPUT_METHOD) public boolean isInputMethodPickerShown();
|
||||
method @RequiresPermission(android.Manifest.permission.TEST_INPUT_METHOD) public void setStylusWindowIdleTimeoutForTest(long);
|
||||
|
||||
@@ -212,6 +212,7 @@ final class IInputMethodManagerGlobalInvoker {
|
||||
|
||||
@AnyThread
|
||||
@NonNull
|
||||
@RequiresPermission(value = Manifest.permission.INTERACT_ACROSS_USERS_FULL, conditional = true)
|
||||
static List<InputMethodInfo> getInputMethodList(@UserIdInt int userId,
|
||||
@DirectBootAwareness int directBootAwareness) {
|
||||
final IInputMethodManager service = getService();
|
||||
|
||||
@@ -1549,13 +1549,16 @@ public final class InputMethodManager {
|
||||
/**
|
||||
* Returns the list of installed input methods for the specified user.
|
||||
*
|
||||
* <p>{@link Manifest.permission#INTERACT_ACROSS_USERS_FULL} is required when and only when
|
||||
* {@code userId} is different from the user id of the current process.</p>
|
||||
*
|
||||
* @param userId user ID to query
|
||||
* @return {@link List} of {@link InputMethodInfo}.
|
||||
* @hide
|
||||
*/
|
||||
@TestApi
|
||||
@RequiresPermission(INTERACT_ACROSS_USERS_FULL)
|
||||
@NonNull
|
||||
@RequiresPermission(value = Manifest.permission.INTERACT_ACROSS_USERS_FULL, conditional = true)
|
||||
public List<InputMethodInfo> getInputMethodListAsUser(@UserIdInt int userId) {
|
||||
return IInputMethodManagerGlobalInvoker.getInputMethodList(userId,
|
||||
DirectBootAwareness.AUTO);
|
||||
|
||||
Reference in New Issue
Block a user