Loading services/core/java/com/android/server/inputmethod/InputMethodManagerService.java +34 −13 Original line number Diff line number Diff line Loading @@ -5761,6 +5761,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub final String imeId = shellCommand.getNextArgRequired(); final PrintWriter out = shellCommand.getOutPrintWriter(); final PrintWriter error = shellCommand.getErrPrintWriter(); boolean hasFailed = false; synchronized (mMethodMap) { final int[] userIds = InputMethodUtils.resolveUserId(userIdToBeResolved, mSettings.getCurrentUserId(), shellCommand.getErrPrintWriter()); Loading @@ -5768,11 +5769,11 @@ public class InputMethodManagerService extends IInputMethodManager.Stub if (!userHasDebugPriv(userId, shellCommand)) { continue; } handleShellCommandEnableDisableInputMethodInternalLocked(userId, imeId, enabled, out, error); hasFailed |= !handleShellCommandEnableDisableInputMethodInternalLocked( userId, imeId, enabled, out, error); } } return ShellCommandResult.SUCCESS; return hasFailed ? ShellCommandResult.FAILURE : ShellCommandResult.SUCCESS; } /** Loading Loading @@ -5804,8 +5805,18 @@ public class InputMethodManagerService extends IInputMethodManager.Stub return UserHandle.USER_CURRENT; } /** * Handles core logic of {@code adb shell ime enable} and {@code adb shell ime disable}. * * @param userId user ID specified to the command. Pseudo user IDs are not supported. * @param imeId IME ID specified to the command. * @param enabled {@code true} for {@code adb shell ime enable}. {@code false} otherwise. * @param out {@link PrintWriter} to output standard messages. * @param error {@link PrintWriter} to output error messages. * @return {@code false} if it fails to enable the IME. {@code false} otherwise. */ @BinderThread private void handleShellCommandEnableDisableInputMethodInternalLocked( private boolean handleShellCommandEnableDisableInputMethodInternalLocked( @UserIdInt int userId, String imeId, boolean enabled, PrintWriter out, PrintWriter error) { boolean failedToEnableUnknownIme = false; Loading Loading @@ -5851,7 +5862,12 @@ public class InputMethodManagerService extends IInputMethodManager.Stub error.print("Unknown input method "); error.print(imeId); error.println(" cannot be enabled for user #" + userId); } else { // Also print this failure into logcat for better debuggability. Slog.e(TAG, "\"ime enable " + imeId + "\" for user #" + userId + " failed due to its unrecognized IME ID."); return false; } out.print("Input method "); out.print(imeId); out.print(": "); Loading @@ -5859,7 +5875,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub out.print(enabled ? "enabled" : "disabled"); out.print(" for user #"); out.println(userId); } return true; } /** Loading @@ -5874,6 +5890,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub final String imeId = shellCommand.getNextArgRequired(); final PrintWriter out = shellCommand.getOutPrintWriter(); final PrintWriter error = shellCommand.getErrPrintWriter(); boolean hasFailed = false; synchronized (mMethodMap) { final int[] userIds = InputMethodUtils.resolveUserId(userIdToBeResolved, mSettings.getCurrentUserId(), shellCommand.getErrPrintWriter()); Loading @@ -5887,15 +5904,19 @@ public class InputMethodManagerService extends IInputMethodManager.Stub error.print(imeId); error.print(" cannot be selected for user #"); error.println(userId); // Also print this failure into logcat for better debuggability. Slog.e(TAG, "\"ime set " + imeId + "\" for user #" + userId + " failed due to its unrecognized IME ID."); } else { out.print("Input method "); out.print(imeId); out.print(" selected for user #"); out.println(userId); } hasFailed |= failedToSelectUnknownIme; } } return ShellCommandResult.SUCCESS; return hasFailed ? ShellCommandResult.FAILURE : ShellCommandResult.SUCCESS; } /** Loading Loading
services/core/java/com/android/server/inputmethod/InputMethodManagerService.java +34 −13 Original line number Diff line number Diff line Loading @@ -5761,6 +5761,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub final String imeId = shellCommand.getNextArgRequired(); final PrintWriter out = shellCommand.getOutPrintWriter(); final PrintWriter error = shellCommand.getErrPrintWriter(); boolean hasFailed = false; synchronized (mMethodMap) { final int[] userIds = InputMethodUtils.resolveUserId(userIdToBeResolved, mSettings.getCurrentUserId(), shellCommand.getErrPrintWriter()); Loading @@ -5768,11 +5769,11 @@ public class InputMethodManagerService extends IInputMethodManager.Stub if (!userHasDebugPriv(userId, shellCommand)) { continue; } handleShellCommandEnableDisableInputMethodInternalLocked(userId, imeId, enabled, out, error); hasFailed |= !handleShellCommandEnableDisableInputMethodInternalLocked( userId, imeId, enabled, out, error); } } return ShellCommandResult.SUCCESS; return hasFailed ? ShellCommandResult.FAILURE : ShellCommandResult.SUCCESS; } /** Loading Loading @@ -5804,8 +5805,18 @@ public class InputMethodManagerService extends IInputMethodManager.Stub return UserHandle.USER_CURRENT; } /** * Handles core logic of {@code adb shell ime enable} and {@code adb shell ime disable}. * * @param userId user ID specified to the command. Pseudo user IDs are not supported. * @param imeId IME ID specified to the command. * @param enabled {@code true} for {@code adb shell ime enable}. {@code false} otherwise. * @param out {@link PrintWriter} to output standard messages. * @param error {@link PrintWriter} to output error messages. * @return {@code false} if it fails to enable the IME. {@code false} otherwise. */ @BinderThread private void handleShellCommandEnableDisableInputMethodInternalLocked( private boolean handleShellCommandEnableDisableInputMethodInternalLocked( @UserIdInt int userId, String imeId, boolean enabled, PrintWriter out, PrintWriter error) { boolean failedToEnableUnknownIme = false; Loading Loading @@ -5851,7 +5862,12 @@ public class InputMethodManagerService extends IInputMethodManager.Stub error.print("Unknown input method "); error.print(imeId); error.println(" cannot be enabled for user #" + userId); } else { // Also print this failure into logcat for better debuggability. Slog.e(TAG, "\"ime enable " + imeId + "\" for user #" + userId + " failed due to its unrecognized IME ID."); return false; } out.print("Input method "); out.print(imeId); out.print(": "); Loading @@ -5859,7 +5875,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub out.print(enabled ? "enabled" : "disabled"); out.print(" for user #"); out.println(userId); } return true; } /** Loading @@ -5874,6 +5890,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub final String imeId = shellCommand.getNextArgRequired(); final PrintWriter out = shellCommand.getOutPrintWriter(); final PrintWriter error = shellCommand.getErrPrintWriter(); boolean hasFailed = false; synchronized (mMethodMap) { final int[] userIds = InputMethodUtils.resolveUserId(userIdToBeResolved, mSettings.getCurrentUserId(), shellCommand.getErrPrintWriter()); Loading @@ -5887,15 +5904,19 @@ public class InputMethodManagerService extends IInputMethodManager.Stub error.print(imeId); error.print(" cannot be selected for user #"); error.println(userId); // Also print this failure into logcat for better debuggability. Slog.e(TAG, "\"ime set " + imeId + "\" for user #" + userId + " failed due to its unrecognized IME ID."); } else { out.print("Input method "); out.print(imeId); out.print(" selected for user #"); out.println(userId); } hasFailed |= failedToSelectUnknownIme; } } return ShellCommandResult.SUCCESS; return hasFailed ? ShellCommandResult.FAILURE : ShellCommandResult.SUCCESS; } /** Loading