Loading services/core/java/com/android/server/inputmethod/DefaultImeVisibilityApplier.java +3 −18 Original line number Diff line number Diff line Loading @@ -202,7 +202,7 @@ final class DefaultImeVisibilityApplier { break; case STATE_HIDE_IME_EXPLICIT: if (Flags.refactorInsetsController()) { setImeVisibilityOnFocusedWindowClient(false, userId, statsToken); mService.setImeVisibilityOnFocusedWindowClient(false, userData, statsToken); } else { mService.hideCurrentInputLocked(windowToken, statsToken, 0 /* flags */, null /* resultReceiver */, reason, userId); Loading @@ -210,7 +210,7 @@ final class DefaultImeVisibilityApplier { break; case STATE_HIDE_IME_NOT_ALWAYS: if (Flags.refactorInsetsController()) { setImeVisibilityOnFocusedWindowClient(false, userId, statsToken); mService.setImeVisibilityOnFocusedWindowClient(false, userData, statsToken); } else { mService.hideCurrentInputLocked(windowToken, statsToken, InputMethodManager.HIDE_NOT_ALWAYS, null /* resultReceiver */, reason, Loading @@ -221,7 +221,7 @@ final class DefaultImeVisibilityApplier { if (Flags.refactorInsetsController()) { // This can be triggered by IMMS#startInputOrWindowGainedFocus. We need to // set the requestedVisibleTypes in InsetsController first, before applying it. setImeVisibilityOnFocusedWindowClient(true, userId, statsToken); mService.setImeVisibilityOnFocusedWindowClient(true, userData, statsToken); } else { mService.showCurrentInputLocked(windowToken, statsToken, InputMethodManager.SHOW_IMPLICIT, MotionEvent.TOOL_TYPE_UNKNOWN, Loading Loading @@ -276,19 +276,4 @@ final class DefaultImeVisibilityApplier { } return false; } @GuardedBy("ImfLock.class") private void setImeVisibilityOnFocusedWindowClient(boolean visibility, @UserIdInt int userId, @NonNull ImeTracker.Token statsToken) { final var userData = mService.getUserData(userId); if (userData.mImeBindingState != null && userData.mImeBindingState.mFocusedWindowClient != null && userData.mImeBindingState.mFocusedWindowClient.mClient != null) { userData.mImeBindingState.mFocusedWindowClient.mClient.setImeVisibility(visibility, statsToken); } else { ImeTracker.forLogging().onFailed(statsToken, ImeTracker.PHASE_SERVER_SET_VISIBILITY_ON_FOCUSED_WINDOW); } } } services/core/java/com/android/server/inputmethod/InputMethodManagerService.java +28 −43 Original line number Diff line number Diff line Loading @@ -3147,11 +3147,7 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl. if (Flags.refactorInsetsController()) { final var visibilityStateComputer = userData.mVisibilityStateComputer; boolean wasVisible = visibilityStateComputer.isInputShown(); if (userData.mImeBindingState != null && userData.mImeBindingState.mFocusedWindowClient != null && userData.mImeBindingState.mFocusedWindowClient.mClient != null) { userData.mImeBindingState.mFocusedWindowClient.mClient .setImeVisibility(true, statsToken); if (setImeVisibilityOnFocusedWindowClient(false, userData, statsToken)) { if (resultReceiver != null) { resultReceiver.send( wasVisible ? InputMethodManager.RESULT_UNCHANGED_SHOWN Loading Loading @@ -3600,13 +3596,9 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl. Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "IMMS.hideSoftInput"); if (DEBUG) Slog.v(TAG, "Client requesting input be hidden"); if (Flags.refactorInsetsController()) { if (userData.mImeBindingState != null && userData.mImeBindingState.mFocusedWindowClient != null && userData.mImeBindingState.mFocusedWindowClient.mClient != null) { boolean wasVisible = visibilityStateComputer.isInputShown(); // TODO add windowToken to interface userData.mImeBindingState.mFocusedWindowClient.mClient .setImeVisibility(false, statsToken); if (setImeVisibilityOnFocusedWindowClient(false, userData, statsToken)) { if (resultReceiver != null) { resultReceiver.send(wasVisible ? InputMethodManager.RESULT_HIDDEN : InputMethodManager.RESULT_UNCHANGED_HIDDEN, null); Loading Loading @@ -4943,12 +4935,7 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl. if (Flags.refactorInsetsController()) { userData.mCurClient.mClient.setImeVisibility(false, statsToken); // TODO we will loose the flags here if (userData.mImeBindingState != null && userData.mImeBindingState.mFocusedWindowClient != null && userData.mImeBindingState.mFocusedWindowClient.mClient != null) { userData.mImeBindingState.mFocusedWindowClient.mClient .setImeVisibility(false, statsToken); } setImeVisibilityOnFocusedWindowClient(false, userData, statsToken); } else { final var visibilityStateComputer = userData.mVisibilityStateComputer; hideCurrentInputLocked(visibilityStateComputer.getLastImeTargetWindow(), Loading Loading @@ -4981,14 +4968,8 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl. final long ident = Binder.clearCallingIdentity(); try { if (Flags.refactorInsetsController()) { userData.mCurClient.mClient.setImeVisibility(false, statsToken); // TODO we will loose the flags here if (userData.mImeBindingState != null && userData.mImeBindingState.mFocusedWindowClient != null && userData.mImeBindingState.mFocusedWindowClient.mClient != null) { userData.mImeBindingState.mFocusedWindowClient.mClient .setImeVisibility(true, statsToken); } userData.mCurClient.mClient.setImeVisibility(true, statsToken); setImeVisibilityOnFocusedWindowClient(true, userData, statsToken); } else { final var visibilityStateComputer = userData.mVisibilityStateComputer; showCurrentInputLocked(visibilityStateComputer.getLastImeTargetWindow(), Loading Loading @@ -5150,13 +5131,8 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl. final int userId = resolveImeUserIdFromDisplayIdLocked(originatingDisplayId); final var userData = getUserData(userId); if (Flags.refactorInsetsController()) { if (userData.mImeBindingState != null && userData.mImeBindingState.mFocusedWindowClient != null && userData.mImeBindingState.mFocusedWindowClient.mClient != null) { userData.mImeBindingState.mFocusedWindowClient.mClient .setImeVisibility(false, setImeVisibilityOnFocusedWindowClient(false, userData, null /* TODO(b329229469) check statsToken */); } } else { hideCurrentInputLocked(userData.mImeBindingState.mFocusedWindow, Loading Loading @@ -6825,16 +6801,8 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl. final InputMethodSettings settings = InputMethodSettingsRepository.get(userId); final var userData = getUserData(userId); if (Flags.refactorInsetsController()) { if (userData.mImeBindingState != null && userData.mImeBindingState.mFocusedWindowClient != null && userData.mImeBindingState.mFocusedWindowClient.mClient != null) { userData.mImeBindingState.mFocusedWindowClient.mClient .setImeVisibility(false, setImeVisibilityOnFocusedWindowClient(false, userData, null /* TODO(b329229469) initialize statsToken here? */); } else { // TODO(b329229469): ImeTracker? } } else { hideCurrentInputLocked(userData.mImeBindingState.mFocusedWindow, 0 /* flags */, Loading Loading @@ -6873,6 +6841,23 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl. return ShellCommandResult.SUCCESS; } @GuardedBy("ImfLock.class") boolean setImeVisibilityOnFocusedWindowClient(boolean visible, UserData userData, @NonNull ImeTracker.Token statsToken) { if (Flags.refactorInsetsController()) { if (userData.mImeBindingState != null && userData.mImeBindingState.mFocusedWindowClient != null && userData.mImeBindingState.mFocusedWindowClient.mClient != null) { userData.mImeBindingState.mFocusedWindowClient.mClient.setImeVisibility(visible, statsToken); return true; } ImeTracker.forLogging().onFailed(statsToken, ImeTracker.PHASE_SERVER_SET_VISIBILITY_ON_FOCUSED_WINDOW); } return false; } /** * Handles {@code adb shell cmd input_method tracing start/stop/save-for-bugreport}. * Loading Loading
services/core/java/com/android/server/inputmethod/DefaultImeVisibilityApplier.java +3 −18 Original line number Diff line number Diff line Loading @@ -202,7 +202,7 @@ final class DefaultImeVisibilityApplier { break; case STATE_HIDE_IME_EXPLICIT: if (Flags.refactorInsetsController()) { setImeVisibilityOnFocusedWindowClient(false, userId, statsToken); mService.setImeVisibilityOnFocusedWindowClient(false, userData, statsToken); } else { mService.hideCurrentInputLocked(windowToken, statsToken, 0 /* flags */, null /* resultReceiver */, reason, userId); Loading @@ -210,7 +210,7 @@ final class DefaultImeVisibilityApplier { break; case STATE_HIDE_IME_NOT_ALWAYS: if (Flags.refactorInsetsController()) { setImeVisibilityOnFocusedWindowClient(false, userId, statsToken); mService.setImeVisibilityOnFocusedWindowClient(false, userData, statsToken); } else { mService.hideCurrentInputLocked(windowToken, statsToken, InputMethodManager.HIDE_NOT_ALWAYS, null /* resultReceiver */, reason, Loading @@ -221,7 +221,7 @@ final class DefaultImeVisibilityApplier { if (Flags.refactorInsetsController()) { // This can be triggered by IMMS#startInputOrWindowGainedFocus. We need to // set the requestedVisibleTypes in InsetsController first, before applying it. setImeVisibilityOnFocusedWindowClient(true, userId, statsToken); mService.setImeVisibilityOnFocusedWindowClient(true, userData, statsToken); } else { mService.showCurrentInputLocked(windowToken, statsToken, InputMethodManager.SHOW_IMPLICIT, MotionEvent.TOOL_TYPE_UNKNOWN, Loading Loading @@ -276,19 +276,4 @@ final class DefaultImeVisibilityApplier { } return false; } @GuardedBy("ImfLock.class") private void setImeVisibilityOnFocusedWindowClient(boolean visibility, @UserIdInt int userId, @NonNull ImeTracker.Token statsToken) { final var userData = mService.getUserData(userId); if (userData.mImeBindingState != null && userData.mImeBindingState.mFocusedWindowClient != null && userData.mImeBindingState.mFocusedWindowClient.mClient != null) { userData.mImeBindingState.mFocusedWindowClient.mClient.setImeVisibility(visibility, statsToken); } else { ImeTracker.forLogging().onFailed(statsToken, ImeTracker.PHASE_SERVER_SET_VISIBILITY_ON_FOCUSED_WINDOW); } } }
services/core/java/com/android/server/inputmethod/InputMethodManagerService.java +28 −43 Original line number Diff line number Diff line Loading @@ -3147,11 +3147,7 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl. if (Flags.refactorInsetsController()) { final var visibilityStateComputer = userData.mVisibilityStateComputer; boolean wasVisible = visibilityStateComputer.isInputShown(); if (userData.mImeBindingState != null && userData.mImeBindingState.mFocusedWindowClient != null && userData.mImeBindingState.mFocusedWindowClient.mClient != null) { userData.mImeBindingState.mFocusedWindowClient.mClient .setImeVisibility(true, statsToken); if (setImeVisibilityOnFocusedWindowClient(false, userData, statsToken)) { if (resultReceiver != null) { resultReceiver.send( wasVisible ? InputMethodManager.RESULT_UNCHANGED_SHOWN Loading Loading @@ -3600,13 +3596,9 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl. Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "IMMS.hideSoftInput"); if (DEBUG) Slog.v(TAG, "Client requesting input be hidden"); if (Flags.refactorInsetsController()) { if (userData.mImeBindingState != null && userData.mImeBindingState.mFocusedWindowClient != null && userData.mImeBindingState.mFocusedWindowClient.mClient != null) { boolean wasVisible = visibilityStateComputer.isInputShown(); // TODO add windowToken to interface userData.mImeBindingState.mFocusedWindowClient.mClient .setImeVisibility(false, statsToken); if (setImeVisibilityOnFocusedWindowClient(false, userData, statsToken)) { if (resultReceiver != null) { resultReceiver.send(wasVisible ? InputMethodManager.RESULT_HIDDEN : InputMethodManager.RESULT_UNCHANGED_HIDDEN, null); Loading Loading @@ -4943,12 +4935,7 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl. if (Flags.refactorInsetsController()) { userData.mCurClient.mClient.setImeVisibility(false, statsToken); // TODO we will loose the flags here if (userData.mImeBindingState != null && userData.mImeBindingState.mFocusedWindowClient != null && userData.mImeBindingState.mFocusedWindowClient.mClient != null) { userData.mImeBindingState.mFocusedWindowClient.mClient .setImeVisibility(false, statsToken); } setImeVisibilityOnFocusedWindowClient(false, userData, statsToken); } else { final var visibilityStateComputer = userData.mVisibilityStateComputer; hideCurrentInputLocked(visibilityStateComputer.getLastImeTargetWindow(), Loading Loading @@ -4981,14 +4968,8 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl. final long ident = Binder.clearCallingIdentity(); try { if (Flags.refactorInsetsController()) { userData.mCurClient.mClient.setImeVisibility(false, statsToken); // TODO we will loose the flags here if (userData.mImeBindingState != null && userData.mImeBindingState.mFocusedWindowClient != null && userData.mImeBindingState.mFocusedWindowClient.mClient != null) { userData.mImeBindingState.mFocusedWindowClient.mClient .setImeVisibility(true, statsToken); } userData.mCurClient.mClient.setImeVisibility(true, statsToken); setImeVisibilityOnFocusedWindowClient(true, userData, statsToken); } else { final var visibilityStateComputer = userData.mVisibilityStateComputer; showCurrentInputLocked(visibilityStateComputer.getLastImeTargetWindow(), Loading Loading @@ -5150,13 +5131,8 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl. final int userId = resolveImeUserIdFromDisplayIdLocked(originatingDisplayId); final var userData = getUserData(userId); if (Flags.refactorInsetsController()) { if (userData.mImeBindingState != null && userData.mImeBindingState.mFocusedWindowClient != null && userData.mImeBindingState.mFocusedWindowClient.mClient != null) { userData.mImeBindingState.mFocusedWindowClient.mClient .setImeVisibility(false, setImeVisibilityOnFocusedWindowClient(false, userData, null /* TODO(b329229469) check statsToken */); } } else { hideCurrentInputLocked(userData.mImeBindingState.mFocusedWindow, Loading Loading @@ -6825,16 +6801,8 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl. final InputMethodSettings settings = InputMethodSettingsRepository.get(userId); final var userData = getUserData(userId); if (Flags.refactorInsetsController()) { if (userData.mImeBindingState != null && userData.mImeBindingState.mFocusedWindowClient != null && userData.mImeBindingState.mFocusedWindowClient.mClient != null) { userData.mImeBindingState.mFocusedWindowClient.mClient .setImeVisibility(false, setImeVisibilityOnFocusedWindowClient(false, userData, null /* TODO(b329229469) initialize statsToken here? */); } else { // TODO(b329229469): ImeTracker? } } else { hideCurrentInputLocked(userData.mImeBindingState.mFocusedWindow, 0 /* flags */, Loading Loading @@ -6873,6 +6841,23 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl. return ShellCommandResult.SUCCESS; } @GuardedBy("ImfLock.class") boolean setImeVisibilityOnFocusedWindowClient(boolean visible, UserData userData, @NonNull ImeTracker.Token statsToken) { if (Flags.refactorInsetsController()) { if (userData.mImeBindingState != null && userData.mImeBindingState.mFocusedWindowClient != null && userData.mImeBindingState.mFocusedWindowClient.mClient != null) { userData.mImeBindingState.mFocusedWindowClient.mClient.setImeVisibility(visible, statsToken); return true; } ImeTracker.forLogging().onFailed(statsToken, ImeTracker.PHASE_SERVER_SET_VISIBILITY_ON_FOCUSED_WINDOW); } return false; } /** * Handles {@code adb shell cmd input_method tracing start/stop/save-for-bugreport}. * Loading