Loading services/core/java/com/android/server/inputmethod/InputMethodManagerService.java +104 −89 Original line number Diff line number Diff line Loading @@ -6107,7 +6107,22 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl. final int argUserId = parseUserIdFromDumpArgs(args); final Printer p = new PrintWriterPrinter(pw); p.println("Current Input Method Manager state:"); p.println(" concurrentMultiUserModeEnabled=" + mConcurrentMultiUserModeEnabled); p.println(" mSystemReady=" + mSystemReady); p.println(" mInteractive=" + mIsInteractive); p.println(" mConcurrentMultiUserModeEnabled=" + mConcurrentMultiUserModeEnabled); p.println(" ENABLE_HIDE_IME_CAPTION_BAR=" + InputMethodService.ENABLE_HIDE_IME_CAPTION_BAR); synchronized (ImfLock.class) { p.println(" mStylusIds=" + (mStylusIds != null ? Arrays.toString(mStylusIds.toArray()) : "")); } if (Flags.imeSwitcherRevamp()) { p.println(" mMenuControllerNew:"); mMenuControllerNew.dump(p, " "); } else { p.println(" mMenuController:"); mMenuController.dump(p, " "); } if (mConcurrentMultiUserModeEnabled && argUserId == UserHandle.USER_NULL) { mUserDataRepository.forAllUserData( u -> dumpAsStringNoCheckForUser(u, fd, pw, args, isCritical)); Loading @@ -6116,6 +6131,22 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl. final var userData = getUserData(userId); dumpAsStringNoCheckForUser(userData, fd, pw, args, isCritical); } // TODO(b/365868861): Make StartInputHistory, SoftInputShowHideHistory and ImeTracker per // user. synchronized (ImfLock.class) { p.println(" mStartInputHistory:"); mStartInputHistory.dump(pw, " "); p.println(" mSoftInputShowHideHistory:"); mSoftInputShowHideHistory.dump(pw, " "); } p.println(" mImeTrackerService#History:"); mImeTrackerService.dump(pw, " "); dumpUserRepository(p); dumpClientStates(p); } @UserIdInt Loading Loading @@ -6146,24 +6177,6 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl. p.println(" InputMethod #" + i + ":"); info.dump(p, " "); } // Dump ClientController#mClients p.println(" ClientStates:"); // TODO(b/324907325): Remove the suppress warnings once b/324907325 is fixed. @SuppressWarnings("GuardedBy") Consumer<ClientState> clientControllerDump = c -> { p.println(" " + c + ":"); p.println(" client=" + c.mClient); p.println(" fallbackInputConnection=" + c.mFallbackInputConnection); p.println(" sessionRequested=" + c.mSessionRequested); p.println(" sessionRequestedForAccessibility=" + c.mSessionRequestedForAccessibility); p.println(" curSession=" + c.mCurSession); p.println(" selfReportedDisplayId=" + c.mSelfReportedDisplayId); p.println(" uid=" + c.mUid); p.println(" pid=" + c.mPid); }; mClientController.forAllClients(clientControllerDump); final var bindingController = userData.mBindingController; p.println(" mCurMethodId=" + bindingController.getSelectedMethodId()); client = userData.mCurClient; Loading @@ -6171,48 +6184,10 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl. + bindingController.getSequenceNumber()); p.println(" mFocusedWindowPerceptible=" + mFocusedWindowPerceptible); userData.mImeBindingState.dump(/* prefix= */ " ", p); p.println(" mCurId=" + bindingController.getCurId() + " mHaveConnection=" + bindingController.hasMainConnection() + " mBoundToMethod=" + userData.mBoundToMethod + " mVisibleBound=" + bindingController.isVisibleBound()); p.println(" mUserDataRepository="); // TODO(b/324907325): Remove the suppress warnings once b/324907325 is fixed. @SuppressWarnings("GuardedBy") Consumer<UserData> userDataDump = u -> { p.println(" mUserId=" + u.mUserId); p.println(" unlocked=" + u.mIsUnlockingOrUnlocked.get()); p.println(" hasMainConnection=" + u.mBindingController.hasMainConnection()); p.println(" isVisibleBound=" + u.mBindingController.isVisibleBound()); p.println(" boundToMethod=" + u.mBoundToMethod); p.println(" curClient=" + u.mCurClient); if (u.mCurEditorInfo != null) { p.println(" curEditorInfo:"); u.mCurEditorInfo.dump(p, " ", false /* dumpExtras */); } else { p.println(" curEditorInfo: null"); } p.println(" imeBindingState:"); u.mImeBindingState.dump(" ", p); p.println(" enabledSession=" + u.mEnabledSession); p.println(" inFullscreenMode=" + u.mInFullscreenMode); p.println(" imeDrawsNavBar=" + u.mImeDrawsNavBar.get()); p.println(" switchingController:"); u.mSwitchingController.dump(p, " "); p.println(" mLastEnabledInputMethodsStr=" + u.mLastEnabledInputMethodsStr); }; mUserDataRepository.forAllUserData(userDataDump); if (Flags.imeSwitcherRevamp()) { p.println(" menuControllerNew:"); mMenuControllerNew.dump(p, " "); } else { p.println(" menuController:"); mMenuController.dump(p, " "); } p.println(" mCurId=" + bindingController.getCurId()); p.println(" mHaveConnection=" + bindingController.hasMainConnection()); p.println(" mBoundToMethod=" + userData.mBoundToMethod); p.println(" mVisibleBound=" + bindingController.isVisibleBound()); p.println(" mCurToken=" + bindingController.getCurToken()); p.println(" mCurTokenDisplayId=" + bindingController.getCurTokenDisplayId()); p.println(" mCurHostInputToken=" + bindingController.getCurHostInputToken()); Loading @@ -6223,21 +6198,6 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl. final var visibilityStateComputer = userData.mVisibilityStateComputer; visibilityStateComputer.dump(pw, " "); p.println(" mInFullscreenMode=" + userData.mInFullscreenMode); p.println(" mSystemReady=" + mSystemReady + " mInteractive=" + mIsInteractive); p.println(" mConcurrentMultiUserModeEnabled=" + mConcurrentMultiUserModeEnabled); p.println(" ENABLE_HIDE_IME_CAPTION_BAR=" + InputMethodService.ENABLE_HIDE_IME_CAPTION_BAR); p.println(" mStylusIds=" + (mStylusIds != null ? Arrays.toString(mStylusIds.toArray()) : "")); p.println(" mStartInputHistory:"); mStartInputHistory.dump(pw, " "); p.println(" mSoftInputShowHideHistory:"); mSoftInputShowHideHistory.dump(pw, " "); p.println(" mImeTrackerService#History:"); mImeTrackerService.dump(pw, " "); } // Exit here for critical dump, as remaining sections require IPCs to other processes. Loading Loading @@ -6288,6 +6248,61 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl. } } private void dumpClientStates(Printer p) { p.println(" ClientStates:"); // TODO(b/324907325): Remove the suppress warnings once b/324907325 is fixed. @SuppressWarnings("GuardedBy") Consumer<ClientState> clientControllerDump = c -> { p.println(" " + c + ":"); p.println(" client=" + c.mClient); p.println(" fallbackInputConnection=" + c.mFallbackInputConnection); p.println(" sessionRequested=" + c.mSessionRequested); p.println(" sessionRequestedForAccessibility=" + c.mSessionRequestedForAccessibility); p.println(" curSession=" + c.mCurSession); p.println(" selfReportedDisplayId=" + c.mSelfReportedDisplayId); p.println(" uid=" + c.mUid); p.println(" pid=" + c.mPid); }; synchronized (ImfLock.class) { mClientController.forAllClients(clientControllerDump); } } private void dumpUserRepository(Printer p) { p.println(" mUserDataRepository="); // TODO(b/324907325): Remove the suppress warnings once b/324907325 is fixed. @SuppressWarnings("GuardedBy") Consumer<UserData> userDataDump = u -> { p.println(" mUserId=" + u.mUserId); p.println(" unlocked=" + u.mIsUnlockingOrUnlocked.get()); p.println(" hasMainConnection=" + u.mBindingController.hasMainConnection()); p.println(" isVisibleBound=" + u.mBindingController.isVisibleBound()); p.println(" boundToMethod=" + u.mBoundToMethod); p.println(" curClient=" + u.mCurClient); if (u.mCurEditorInfo != null) { p.println(" curEditorInfo:"); u.mCurEditorInfo.dump(p, " ", false /* dumpExtras */); } else { p.println(" curEditorInfo: null"); } p.println(" imeBindingState:"); u.mImeBindingState.dump(" ", p); p.println(" enabledSession=" + u.mEnabledSession); p.println(" inFullscreenMode=" + u.mInFullscreenMode); p.println(" imeDrawsNavBar=" + u.mImeDrawsNavBar.get()); p.println(" switchingController:"); u.mSwitchingController.dump(p, " "); p.println(" mLastEnabledInputMethodsStr=" + u.mLastEnabledInputMethodsStr); }; synchronized (ImfLock.class) { mUserDataRepository.forAllUserData(userDataDump); } } @BinderThread @Override public void onShellCommand(@Nullable FileDescriptor in, @Nullable FileDescriptor out, Loading Loading
services/core/java/com/android/server/inputmethod/InputMethodManagerService.java +104 −89 Original line number Diff line number Diff line Loading @@ -6107,7 +6107,22 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl. final int argUserId = parseUserIdFromDumpArgs(args); final Printer p = new PrintWriterPrinter(pw); p.println("Current Input Method Manager state:"); p.println(" concurrentMultiUserModeEnabled=" + mConcurrentMultiUserModeEnabled); p.println(" mSystemReady=" + mSystemReady); p.println(" mInteractive=" + mIsInteractive); p.println(" mConcurrentMultiUserModeEnabled=" + mConcurrentMultiUserModeEnabled); p.println(" ENABLE_HIDE_IME_CAPTION_BAR=" + InputMethodService.ENABLE_HIDE_IME_CAPTION_BAR); synchronized (ImfLock.class) { p.println(" mStylusIds=" + (mStylusIds != null ? Arrays.toString(mStylusIds.toArray()) : "")); } if (Flags.imeSwitcherRevamp()) { p.println(" mMenuControllerNew:"); mMenuControllerNew.dump(p, " "); } else { p.println(" mMenuController:"); mMenuController.dump(p, " "); } if (mConcurrentMultiUserModeEnabled && argUserId == UserHandle.USER_NULL) { mUserDataRepository.forAllUserData( u -> dumpAsStringNoCheckForUser(u, fd, pw, args, isCritical)); Loading @@ -6116,6 +6131,22 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl. final var userData = getUserData(userId); dumpAsStringNoCheckForUser(userData, fd, pw, args, isCritical); } // TODO(b/365868861): Make StartInputHistory, SoftInputShowHideHistory and ImeTracker per // user. synchronized (ImfLock.class) { p.println(" mStartInputHistory:"); mStartInputHistory.dump(pw, " "); p.println(" mSoftInputShowHideHistory:"); mSoftInputShowHideHistory.dump(pw, " "); } p.println(" mImeTrackerService#History:"); mImeTrackerService.dump(pw, " "); dumpUserRepository(p); dumpClientStates(p); } @UserIdInt Loading Loading @@ -6146,24 +6177,6 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl. p.println(" InputMethod #" + i + ":"); info.dump(p, " "); } // Dump ClientController#mClients p.println(" ClientStates:"); // TODO(b/324907325): Remove the suppress warnings once b/324907325 is fixed. @SuppressWarnings("GuardedBy") Consumer<ClientState> clientControllerDump = c -> { p.println(" " + c + ":"); p.println(" client=" + c.mClient); p.println(" fallbackInputConnection=" + c.mFallbackInputConnection); p.println(" sessionRequested=" + c.mSessionRequested); p.println(" sessionRequestedForAccessibility=" + c.mSessionRequestedForAccessibility); p.println(" curSession=" + c.mCurSession); p.println(" selfReportedDisplayId=" + c.mSelfReportedDisplayId); p.println(" uid=" + c.mUid); p.println(" pid=" + c.mPid); }; mClientController.forAllClients(clientControllerDump); final var bindingController = userData.mBindingController; p.println(" mCurMethodId=" + bindingController.getSelectedMethodId()); client = userData.mCurClient; Loading @@ -6171,48 +6184,10 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl. + bindingController.getSequenceNumber()); p.println(" mFocusedWindowPerceptible=" + mFocusedWindowPerceptible); userData.mImeBindingState.dump(/* prefix= */ " ", p); p.println(" mCurId=" + bindingController.getCurId() + " mHaveConnection=" + bindingController.hasMainConnection() + " mBoundToMethod=" + userData.mBoundToMethod + " mVisibleBound=" + bindingController.isVisibleBound()); p.println(" mUserDataRepository="); // TODO(b/324907325): Remove the suppress warnings once b/324907325 is fixed. @SuppressWarnings("GuardedBy") Consumer<UserData> userDataDump = u -> { p.println(" mUserId=" + u.mUserId); p.println(" unlocked=" + u.mIsUnlockingOrUnlocked.get()); p.println(" hasMainConnection=" + u.mBindingController.hasMainConnection()); p.println(" isVisibleBound=" + u.mBindingController.isVisibleBound()); p.println(" boundToMethod=" + u.mBoundToMethod); p.println(" curClient=" + u.mCurClient); if (u.mCurEditorInfo != null) { p.println(" curEditorInfo:"); u.mCurEditorInfo.dump(p, " ", false /* dumpExtras */); } else { p.println(" curEditorInfo: null"); } p.println(" imeBindingState:"); u.mImeBindingState.dump(" ", p); p.println(" enabledSession=" + u.mEnabledSession); p.println(" inFullscreenMode=" + u.mInFullscreenMode); p.println(" imeDrawsNavBar=" + u.mImeDrawsNavBar.get()); p.println(" switchingController:"); u.mSwitchingController.dump(p, " "); p.println(" mLastEnabledInputMethodsStr=" + u.mLastEnabledInputMethodsStr); }; mUserDataRepository.forAllUserData(userDataDump); if (Flags.imeSwitcherRevamp()) { p.println(" menuControllerNew:"); mMenuControllerNew.dump(p, " "); } else { p.println(" menuController:"); mMenuController.dump(p, " "); } p.println(" mCurId=" + bindingController.getCurId()); p.println(" mHaveConnection=" + bindingController.hasMainConnection()); p.println(" mBoundToMethod=" + userData.mBoundToMethod); p.println(" mVisibleBound=" + bindingController.isVisibleBound()); p.println(" mCurToken=" + bindingController.getCurToken()); p.println(" mCurTokenDisplayId=" + bindingController.getCurTokenDisplayId()); p.println(" mCurHostInputToken=" + bindingController.getCurHostInputToken()); Loading @@ -6223,21 +6198,6 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl. final var visibilityStateComputer = userData.mVisibilityStateComputer; visibilityStateComputer.dump(pw, " "); p.println(" mInFullscreenMode=" + userData.mInFullscreenMode); p.println(" mSystemReady=" + mSystemReady + " mInteractive=" + mIsInteractive); p.println(" mConcurrentMultiUserModeEnabled=" + mConcurrentMultiUserModeEnabled); p.println(" ENABLE_HIDE_IME_CAPTION_BAR=" + InputMethodService.ENABLE_HIDE_IME_CAPTION_BAR); p.println(" mStylusIds=" + (mStylusIds != null ? Arrays.toString(mStylusIds.toArray()) : "")); p.println(" mStartInputHistory:"); mStartInputHistory.dump(pw, " "); p.println(" mSoftInputShowHideHistory:"); mSoftInputShowHideHistory.dump(pw, " "); p.println(" mImeTrackerService#History:"); mImeTrackerService.dump(pw, " "); } // Exit here for critical dump, as remaining sections require IPCs to other processes. Loading Loading @@ -6288,6 +6248,61 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl. } } private void dumpClientStates(Printer p) { p.println(" ClientStates:"); // TODO(b/324907325): Remove the suppress warnings once b/324907325 is fixed. @SuppressWarnings("GuardedBy") Consumer<ClientState> clientControllerDump = c -> { p.println(" " + c + ":"); p.println(" client=" + c.mClient); p.println(" fallbackInputConnection=" + c.mFallbackInputConnection); p.println(" sessionRequested=" + c.mSessionRequested); p.println(" sessionRequestedForAccessibility=" + c.mSessionRequestedForAccessibility); p.println(" curSession=" + c.mCurSession); p.println(" selfReportedDisplayId=" + c.mSelfReportedDisplayId); p.println(" uid=" + c.mUid); p.println(" pid=" + c.mPid); }; synchronized (ImfLock.class) { mClientController.forAllClients(clientControllerDump); } } private void dumpUserRepository(Printer p) { p.println(" mUserDataRepository="); // TODO(b/324907325): Remove the suppress warnings once b/324907325 is fixed. @SuppressWarnings("GuardedBy") Consumer<UserData> userDataDump = u -> { p.println(" mUserId=" + u.mUserId); p.println(" unlocked=" + u.mIsUnlockingOrUnlocked.get()); p.println(" hasMainConnection=" + u.mBindingController.hasMainConnection()); p.println(" isVisibleBound=" + u.mBindingController.isVisibleBound()); p.println(" boundToMethod=" + u.mBoundToMethod); p.println(" curClient=" + u.mCurClient); if (u.mCurEditorInfo != null) { p.println(" curEditorInfo:"); u.mCurEditorInfo.dump(p, " ", false /* dumpExtras */); } else { p.println(" curEditorInfo: null"); } p.println(" imeBindingState:"); u.mImeBindingState.dump(" ", p); p.println(" enabledSession=" + u.mEnabledSession); p.println(" inFullscreenMode=" + u.mInFullscreenMode); p.println(" imeDrawsNavBar=" + u.mImeDrawsNavBar.get()); p.println(" switchingController:"); u.mSwitchingController.dump(p, " "); p.println(" mLastEnabledInputMethodsStr=" + u.mLastEnabledInputMethodsStr); }; synchronized (ImfLock.class) { mUserDataRepository.forAllUserData(userDataDump); } } @BinderThread @Override public void onShellCommand(@Nullable FileDescriptor in, @Nullable FileDescriptor out, Loading