Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 05e924b2 authored by Yohei Yukawa's avatar Yohei Yukawa
Browse files

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
      ec8b1449
 [2]: I5b50b5fe143c74c87b331bda3e5bcc4d6248436e
      d20eef82

Bug: 256239860
Test: presubmit
Change-Id: I14867e528d4292f1f8713b1d9b491fc5ed6c1abb
parent cba800ef
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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);
+1 −0
Original line number Diff line number Diff line
@@ -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();
+4 −1
Original line number Diff line number Diff line
@@ -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);