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

Commit d57ba675 authored by Yohei Yukawa's avatar Yohei Yukawa
Browse files

Do not accept an empty string in EditorInfo#packageName anymore.

In the previous CL Ib871141e3381e45c2623c5f4d692da7a7e78fcc5,
a null or empty EditorInfo#packageName was still allowed in case
there might be applications that simply forgot to set it.

However, after checking the code again, it would be safe to say
that having a null or an empty string in EditorInfo#packageName
would never happen unless the application intentionally clears it
in View#onCreateInputConnection. If there were such applications,
probably we could ask developers to stop doing that.

With this CL the system no longer accepts such an empty package
name.  IME developers do not need to handle such an exceptional
case in their side.

Bug: 18931038
Change-Id: I10d579b48b59fa8ada796e92d58517c6cc5f2230
parent 915e2c77
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -304,13 +304,11 @@ public class EditorInfo implements InputType, Parcelable {
     * name. The system had not verified the consistency between the package name here and
     * application's uid. Consider to use {@link InputBinding#getUid()}, which is trustworthy.
     * Starting from Android MNC, the system verifies the consistency between this package name
     * and application uid before {@link EditorInfo} is passed to the input method as long as the
     * application sets a non-empty package name.</p>
     * and application uid before {@link EditorInfo} is passed to the input method.</p>
     *
     * <p><strong>Editor authors:</strong> Starting from Android MNC, the application is no longer
     * able to establish input connections if the package name provided here is inconsistent with
     * application's uid. Note that the system does accept an empty string for an arbitrary
     * application uid.</p>
     * application's uid.</p>
     */
    public String packageName;

+6 −10
Original line number Diff line number Diff line
@@ -1323,22 +1323,18 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
    }

    InputBindResult startInputUncheckedLocked(@NonNull ClientState cs,
            IInputContext inputContext, EditorInfo attribute, int controlFlags) {
            IInputContext inputContext, @NonNull EditorInfo attribute, int controlFlags) {
        // If no method is currently selected, do nothing.
        if (mCurMethodId == null) {
            return mNoBinding;
        }

        if (attribute != null) {
            // We accept an empty package name as a valid data.
            if (!TextUtils.isEmpty(attribute.packageName) &&
                    !InputMethodUtils.checkIfPackageBelongsToUid(mAppOpsManager, cs.uid,
        if (!InputMethodUtils.checkIfPackageBelongsToUid(mAppOpsManager, cs.uid,
                attribute.packageName)) {
            Slog.e(TAG, "Rejecting this client as it reported an invalid package name."
                    + " uid=" + cs.uid + " package=" + attribute.packageName);
            return mNoBinding;
        }
        }

        if (mCurClient != cs) {
            // Was the keyguard locked when switching over to the new client?