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

Commit c2e31eb4 authored by Vaibhav Devmurari's avatar Vaibhav Devmurari
Browse files

Fix: Security exception in case of work profile

Test: manual
Bug: 272522906
Change-Id: I9057e793641950e2ad903404d591b4e517e91e38
parent 610ef28a
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -65,6 +65,7 @@ import com.android.internal.inputmethod.InputMethodSubtypeHandle;
import com.android.internal.messages.nano.SystemMessageProto;
import com.android.internal.notification.SystemNotificationChannels;
import com.android.internal.util.XmlUtils;
import com.android.server.inputmethod.InputMethodManagerInternal;

import libcore.io.Streams;

@@ -1226,9 +1227,15 @@ final class KeyboardLayoutManager implements InputManager.InputDeviceListener {
                mContext.getSystemService(UserManager.class));
        InputMethodManager inputMethodManager = Objects.requireNonNull(
                mContext.getSystemService(InputMethodManager.class));
        // Need to use InputMethodManagerInternal to call getEnabledInputMethodListAsUser()
        // instead of using InputMethodManager which uses enforceCallingPermissions() that
        // breaks when we are calling the method for work profile user ID since it doesn't check
        // self permissions.
        InputMethodManagerInternal inputMethodManagerInternal = InputMethodManagerInternal.get();
        for (UserHandle userHandle : userManager.getUserHandles(true /* excludeDying */)) {
            int userId = userHandle.getIdentifier();
            for (InputMethodInfo imeInfo : inputMethodManager.getEnabledInputMethodListAsUser(
            for (InputMethodInfo imeInfo :
                    inputMethodManagerInternal.getEnabledInputMethodListAsUser(
                    userId)) {
                for (InputMethodSubtype imeSubtype :
                        inputMethodManager.getEnabledInputMethodSubtypeList(