Loading services/core/java/com/android/server/inputmethod/DefaultImeVisibilityApplier.java +1 −8 Original line number Diff line number Diff line Loading @@ -141,14 +141,7 @@ final class DefaultImeVisibilityApplier implements ImeVisibilityApplier { @GuardedBy("ImfLock.class") @Override public void applyImeVisibility(IBinder windowToken, @NonNull ImeTracker.Token statsToken, @ImeVisibilityStateComputer.VisibilityState int state, @UserIdInt int userId) { applyImeVisibility(windowToken, statsToken, state, SoftInputShowHideReason.NOT_SET /* ignore reason */, userId); } @GuardedBy("ImfLock.class") void applyImeVisibility(IBinder windowToken, @Nullable ImeTracker.Token statsToken, public void applyImeVisibility(IBinder windowToken, @Nullable ImeTracker.Token statsToken, @ImeVisibilityStateComputer.VisibilityState int state, @SoftInputShowHideReason int reason, @UserIdInt int userId) { final var bindingController = mService.getInputMethodBindingController(userId); Loading services/core/java/com/android/server/inputmethod/ImeVisibilityApplier.java +3 −1 Original line number Diff line number Diff line Loading @@ -67,10 +67,12 @@ interface ImeVisibilityApplier { * @param windowToken the token of a window for applying the IME visibility * @param statsToken the token tracking the current IME request * @param state the new IME visibility state for the applier to handle * @param reason the reason why the input window is visible or hidden * @param userId the target user when applying the IME visibility state */ default void applyImeVisibility(IBinder windowToken, @NonNull ImeTracker.Token statsToken, @ImeVisibilityStateComputer.VisibilityState int state, @UserIdInt int userId) { @ImeVisibilityStateComputer.VisibilityState int state, @SoftInputShowHideReason int reason, @UserIdInt int userId) { } /** Loading services/core/java/com/android/server/inputmethod/InputMethodManagerService.java +4 −2 Original line number Diff line number Diff line Loading @@ -1868,7 +1868,8 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl. final var statsToken = createStatsTokenForFocusedClient(false /* show */, SoftInputShowHideReason.UNBIND_CURRENT_METHOD, userId); mVisibilityApplier.applyImeVisibility(userData.mImeBindingState.mFocusedWindow, statsToken, STATE_HIDE_IME, userId); statsToken, STATE_HIDE_IME, SoftInputShowHideReason.NOT_SET /* ignore reason */, userId); } } Loading Loading @@ -4662,7 +4663,8 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl. windowToken, userId); mVisibilityApplier.applyImeVisibility(requestToken, statsToken, setVisible ? ImeVisibilityStateComputer.STATE_SHOW_IME : ImeVisibilityStateComputer.STATE_HIDE_IME, userId); : ImeVisibilityStateComputer.STATE_HIDE_IME, SoftInputShowHideReason.NOT_SET /* ignore reason */, userId); } } finally { Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER); Loading services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/DefaultImeVisibilityApplierTest.java +10 −8 Original line number Diff line number Diff line Loading @@ -50,6 +50,7 @@ import androidx.test.ext.junit.runners.AndroidJUnit4; import com.android.dx.mockito.inline.extended.ExtendedMockito; import com.android.internal.inputmethod.InputBindResult; import com.android.internal.inputmethod.SoftInputShowHideReason; import com.android.internal.inputmethod.StartInputFlags; import com.android.internal.inputmethod.StartInputReason; Loading Loading @@ -106,7 +107,7 @@ public class DefaultImeVisibilityApplierTest extends InputMethodManagerServiceTe assertThrows(IllegalArgumentException.class, () -> { synchronized (ImfLock.class) { mVisibilityApplier.applyImeVisibility(mWindowToken, ImeTracker.Token.empty(), STATE_INVALID, mUserId); STATE_INVALID, eq(SoftInputShowHideReason.NOT_SET), mUserId); } }); } Loading @@ -116,7 +117,7 @@ public class DefaultImeVisibilityApplierTest extends InputMethodManagerServiceTe final var statsToken = ImeTracker.Token.empty(); synchronized (ImfLock.class) { mVisibilityApplier.applyImeVisibility(mWindowToken, statsToken, STATE_SHOW_IME, mUserId); eq(SoftInputShowHideReason.NOT_SET), mUserId); } verify(mMockWindowManagerInternal).showImePostLayout(eq(mWindowToken), eq(statsToken)); } Loading @@ -126,7 +127,7 @@ public class DefaultImeVisibilityApplierTest extends InputMethodManagerServiceTe final var statsToken = ImeTracker.Token.empty(); synchronized (ImfLock.class) { mVisibilityApplier.applyImeVisibility(mWindowToken, statsToken, STATE_HIDE_IME, mUserId); eq(SoftInputShowHideReason.NOT_SET), mUserId); } verify(mMockWindowManagerInternal).hideIme(eq(mWindowToken), anyInt() /* displayId */, eq(statsToken)); Loading @@ -137,7 +138,7 @@ public class DefaultImeVisibilityApplierTest extends InputMethodManagerServiceTe mInputMethodManagerService.mImeWindowVis = IME_ACTIVE; synchronized (ImfLock.class) { mVisibilityApplier.applyImeVisibility(mWindowToken, ImeTracker.Token.empty(), STATE_HIDE_IME_EXPLICIT, mUserId); STATE_HIDE_IME_EXPLICIT, eq(SoftInputShowHideReason.NOT_SET), mUserId); } verifyHideSoftInput(true, true); } Loading @@ -147,7 +148,7 @@ public class DefaultImeVisibilityApplierTest extends InputMethodManagerServiceTe mInputMethodManagerService.mImeWindowVis = IME_ACTIVE; synchronized (ImfLock.class) { mVisibilityApplier.applyImeVisibility(mWindowToken, ImeTracker.Token.empty(), STATE_HIDE_IME_NOT_ALWAYS, mUserId); STATE_HIDE_IME_NOT_ALWAYS, eq(SoftInputShowHideReason.NOT_SET), mUserId); } verifyHideSoftInput(true, true); } Loading @@ -156,7 +157,7 @@ public class DefaultImeVisibilityApplierTest extends InputMethodManagerServiceTe public void testApplyImeVisibility_showImeImplicit() throws Exception { synchronized (ImfLock.class) { mVisibilityApplier.applyImeVisibility(mWindowToken, ImeTracker.Token.empty(), STATE_SHOW_IME_IMPLICIT, mUserId); STATE_SHOW_IME_IMPLICIT, eq(SoftInputShowHideReason.NOT_SET), mUserId); } verifyShowSoftInput(true, true, 0 /* showFlags */); } Loading @@ -177,7 +178,7 @@ public class DefaultImeVisibilityApplierTest extends InputMethodManagerServiceTe // Verify hideIme will apply the expected displayId when the default IME // visibility applier app STATE_HIDE_IME. mVisibilityApplier.applyImeVisibility(mWindowToken, statsToken, STATE_HIDE_IME, mUserId); eq(SoftInputShowHideReason.NOT_SET), mUserId); verify(mInputMethodManagerService.mWindowManagerInternal).hideIme( eq(mWindowToken), eq(displayIdToShowIme), eq(statsToken)); } Loading Loading @@ -224,7 +225,8 @@ public class DefaultImeVisibilityApplierTest extends InputMethodManagerServiceTe // the IME hidden state. // The unbind will cancel the previous stats token, and create a new one internally. verify(mVisibilityApplier).applyImeVisibility( eq(mWindowToken), any(), eq(STATE_HIDE_IME), eq(mUserId) /* userId */); eq(mWindowToken), any(), eq(STATE_HIDE_IME), eq(SoftInputShowHideReason.NOT_SET), eq(mUserId) /* userId */); verify(mInputMethodManagerService.mWindowManagerInternal).hideIme( eq(mWindowToken), eq(displayIdToShowIme), and(not(eq(statsToken)), notNull())); } Loading Loading
services/core/java/com/android/server/inputmethod/DefaultImeVisibilityApplier.java +1 −8 Original line number Diff line number Diff line Loading @@ -141,14 +141,7 @@ final class DefaultImeVisibilityApplier implements ImeVisibilityApplier { @GuardedBy("ImfLock.class") @Override public void applyImeVisibility(IBinder windowToken, @NonNull ImeTracker.Token statsToken, @ImeVisibilityStateComputer.VisibilityState int state, @UserIdInt int userId) { applyImeVisibility(windowToken, statsToken, state, SoftInputShowHideReason.NOT_SET /* ignore reason */, userId); } @GuardedBy("ImfLock.class") void applyImeVisibility(IBinder windowToken, @Nullable ImeTracker.Token statsToken, public void applyImeVisibility(IBinder windowToken, @Nullable ImeTracker.Token statsToken, @ImeVisibilityStateComputer.VisibilityState int state, @SoftInputShowHideReason int reason, @UserIdInt int userId) { final var bindingController = mService.getInputMethodBindingController(userId); Loading
services/core/java/com/android/server/inputmethod/ImeVisibilityApplier.java +3 −1 Original line number Diff line number Diff line Loading @@ -67,10 +67,12 @@ interface ImeVisibilityApplier { * @param windowToken the token of a window for applying the IME visibility * @param statsToken the token tracking the current IME request * @param state the new IME visibility state for the applier to handle * @param reason the reason why the input window is visible or hidden * @param userId the target user when applying the IME visibility state */ default void applyImeVisibility(IBinder windowToken, @NonNull ImeTracker.Token statsToken, @ImeVisibilityStateComputer.VisibilityState int state, @UserIdInt int userId) { @ImeVisibilityStateComputer.VisibilityState int state, @SoftInputShowHideReason int reason, @UserIdInt int userId) { } /** Loading
services/core/java/com/android/server/inputmethod/InputMethodManagerService.java +4 −2 Original line number Diff line number Diff line Loading @@ -1868,7 +1868,8 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl. final var statsToken = createStatsTokenForFocusedClient(false /* show */, SoftInputShowHideReason.UNBIND_CURRENT_METHOD, userId); mVisibilityApplier.applyImeVisibility(userData.mImeBindingState.mFocusedWindow, statsToken, STATE_HIDE_IME, userId); statsToken, STATE_HIDE_IME, SoftInputShowHideReason.NOT_SET /* ignore reason */, userId); } } Loading Loading @@ -4662,7 +4663,8 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl. windowToken, userId); mVisibilityApplier.applyImeVisibility(requestToken, statsToken, setVisible ? ImeVisibilityStateComputer.STATE_SHOW_IME : ImeVisibilityStateComputer.STATE_HIDE_IME, userId); : ImeVisibilityStateComputer.STATE_HIDE_IME, SoftInputShowHideReason.NOT_SET /* ignore reason */, userId); } } finally { Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER); Loading
services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/DefaultImeVisibilityApplierTest.java +10 −8 Original line number Diff line number Diff line Loading @@ -50,6 +50,7 @@ import androidx.test.ext.junit.runners.AndroidJUnit4; import com.android.dx.mockito.inline.extended.ExtendedMockito; import com.android.internal.inputmethod.InputBindResult; import com.android.internal.inputmethod.SoftInputShowHideReason; import com.android.internal.inputmethod.StartInputFlags; import com.android.internal.inputmethod.StartInputReason; Loading Loading @@ -106,7 +107,7 @@ public class DefaultImeVisibilityApplierTest extends InputMethodManagerServiceTe assertThrows(IllegalArgumentException.class, () -> { synchronized (ImfLock.class) { mVisibilityApplier.applyImeVisibility(mWindowToken, ImeTracker.Token.empty(), STATE_INVALID, mUserId); STATE_INVALID, eq(SoftInputShowHideReason.NOT_SET), mUserId); } }); } Loading @@ -116,7 +117,7 @@ public class DefaultImeVisibilityApplierTest extends InputMethodManagerServiceTe final var statsToken = ImeTracker.Token.empty(); synchronized (ImfLock.class) { mVisibilityApplier.applyImeVisibility(mWindowToken, statsToken, STATE_SHOW_IME, mUserId); eq(SoftInputShowHideReason.NOT_SET), mUserId); } verify(mMockWindowManagerInternal).showImePostLayout(eq(mWindowToken), eq(statsToken)); } Loading @@ -126,7 +127,7 @@ public class DefaultImeVisibilityApplierTest extends InputMethodManagerServiceTe final var statsToken = ImeTracker.Token.empty(); synchronized (ImfLock.class) { mVisibilityApplier.applyImeVisibility(mWindowToken, statsToken, STATE_HIDE_IME, mUserId); eq(SoftInputShowHideReason.NOT_SET), mUserId); } verify(mMockWindowManagerInternal).hideIme(eq(mWindowToken), anyInt() /* displayId */, eq(statsToken)); Loading @@ -137,7 +138,7 @@ public class DefaultImeVisibilityApplierTest extends InputMethodManagerServiceTe mInputMethodManagerService.mImeWindowVis = IME_ACTIVE; synchronized (ImfLock.class) { mVisibilityApplier.applyImeVisibility(mWindowToken, ImeTracker.Token.empty(), STATE_HIDE_IME_EXPLICIT, mUserId); STATE_HIDE_IME_EXPLICIT, eq(SoftInputShowHideReason.NOT_SET), mUserId); } verifyHideSoftInput(true, true); } Loading @@ -147,7 +148,7 @@ public class DefaultImeVisibilityApplierTest extends InputMethodManagerServiceTe mInputMethodManagerService.mImeWindowVis = IME_ACTIVE; synchronized (ImfLock.class) { mVisibilityApplier.applyImeVisibility(mWindowToken, ImeTracker.Token.empty(), STATE_HIDE_IME_NOT_ALWAYS, mUserId); STATE_HIDE_IME_NOT_ALWAYS, eq(SoftInputShowHideReason.NOT_SET), mUserId); } verifyHideSoftInput(true, true); } Loading @@ -156,7 +157,7 @@ public class DefaultImeVisibilityApplierTest extends InputMethodManagerServiceTe public void testApplyImeVisibility_showImeImplicit() throws Exception { synchronized (ImfLock.class) { mVisibilityApplier.applyImeVisibility(mWindowToken, ImeTracker.Token.empty(), STATE_SHOW_IME_IMPLICIT, mUserId); STATE_SHOW_IME_IMPLICIT, eq(SoftInputShowHideReason.NOT_SET), mUserId); } verifyShowSoftInput(true, true, 0 /* showFlags */); } Loading @@ -177,7 +178,7 @@ public class DefaultImeVisibilityApplierTest extends InputMethodManagerServiceTe // Verify hideIme will apply the expected displayId when the default IME // visibility applier app STATE_HIDE_IME. mVisibilityApplier.applyImeVisibility(mWindowToken, statsToken, STATE_HIDE_IME, mUserId); eq(SoftInputShowHideReason.NOT_SET), mUserId); verify(mInputMethodManagerService.mWindowManagerInternal).hideIme( eq(mWindowToken), eq(displayIdToShowIme), eq(statsToken)); } Loading Loading @@ -224,7 +225,8 @@ public class DefaultImeVisibilityApplierTest extends InputMethodManagerServiceTe // the IME hidden state. // The unbind will cancel the previous stats token, and create a new one internally. verify(mVisibilityApplier).applyImeVisibility( eq(mWindowToken), any(), eq(STATE_HIDE_IME), eq(mUserId) /* userId */); eq(mWindowToken), any(), eq(STATE_HIDE_IME), eq(SoftInputShowHideReason.NOT_SET), eq(mUserId) /* userId */); verify(mInputMethodManagerService.mWindowManagerInternal).hideIme( eq(mWindowToken), eq(displayIdToShowIme), and(not(eq(statsToken)), notNull())); } Loading