summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Adrian Roos <roosa@google.com> 2024-05-08 17:04:41 +0200
committer Adrian Roos <roosa@google.com> 2024-05-15 13:27:45 +0000
commit8ed772f4b524586ef35b7d6fd2333c062b648b04 (patch)
tree0be8b7cbf720eba6095049f0efa8973bc636237e
parent3559a2028062dff70f9e8921aeb026e53036b38a (diff)
IME: Fix InputMethodSystemServerTests for defer_show_soft_input_until_session_creation
With defer_show_soft_input_until_session_creation enabled, IMMS won't show the IME unitl a session has been created. Updates the tests to maintain a created session. Bug: 339239657 Bug: 337766845 Test: atest FrameworksInputMethodSystemServerTests Flag: TEST_ONLY Change-Id: I6bd3da92cf953780dd62b1b29fd07c11bf511832
-rw-r--r--services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/DefaultImeVisibilityApplierTest.java8
-rw-r--r--services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/InputMethodManagerServiceTestBase.java14
2 files changed, 20 insertions, 2 deletions
diff --git a/services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/DefaultImeVisibilityApplierTest.java b/services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/DefaultImeVisibilityApplierTest.java
index 1d225ba09bbd..221a99102daa 100644
--- a/services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/DefaultImeVisibilityApplierTest.java
+++ b/services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/DefaultImeVisibilityApplierTest.java
@@ -36,9 +36,10 @@ import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.notNull;
import static org.mockito.Mockito.anyInt;
import static org.mockito.Mockito.eq;
-import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
+import static java.util.Objects.requireNonNull;
+
import android.os.Binder;
import android.os.IBinder;
import android.os.RemoteException;
@@ -72,7 +73,10 @@ public class DefaultImeVisibilityApplierTest extends InputMethodManagerServiceTe
super.setUp();
mVisibilityApplier =
(DefaultImeVisibilityApplier) mInputMethodManagerService.getVisibilityApplier();
- mInputMethodManagerService.setAttachedClientForTesting(mock(ClientState.class));
+ synchronized (ImfLock.class) {
+ mInputMethodManagerService.setAttachedClientForTesting(requireNonNull(
+ mInputMethodManagerService.getClientStateLocked(mMockInputMethodClient)));
+ }
}
@Test
diff --git a/services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/InputMethodManagerServiceTestBase.java b/services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/InputMethodManagerServiceTestBase.java
index cff22654e30c..28a99f2f8e87 100644
--- a/services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/InputMethodManagerServiceTestBase.java
+++ b/services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/InputMethodManagerServiceTestBase.java
@@ -29,6 +29,7 @@ import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.notNull;
import static org.mockito.Mockito.eq;
+import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -45,6 +46,7 @@ import android.os.Process;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.UserHandle;
+import android.view.InputChannel;
import android.view.inputmethod.EditorInfo;
import android.window.ImeOnBackInvokedDispatcher;
@@ -53,6 +55,7 @@ import androidx.test.platform.app.InstrumentationRegistry;
import com.android.internal.compat.IPlatformCompat;
import com.android.internal.inputmethod.IInputMethod;
import com.android.internal.inputmethod.IInputMethodClient;
+import com.android.internal.inputmethod.IInputMethodSession;
import com.android.internal.inputmethod.IRemoteAccessibilityInputConnection;
import com.android.internal.inputmethod.IRemoteInputConnection;
import com.android.internal.inputmethod.InputBindResult;
@@ -104,6 +107,7 @@ public class InputMethodManagerServiceTestBase {
@Mock protected UserManagerInternal mMockUserManagerInternal;
@Mock protected InputMethodBindingController mMockInputMethodBindingController;
@Mock protected IInputMethodClient mMockInputMethodClient;
+ @Mock protected IInputMethodSession mMockInputMethodSession;
@Mock protected IBinder mWindowToken;
@Mock protected IRemoteInputConnection mMockRemoteInputConnection;
@Mock protected IRemoteAccessibilityInputConnection mMockRemoteAccessibilityInputConnection;
@@ -246,6 +250,7 @@ public class InputMethodManagerServiceTestBase {
// Call InputMethodManagerService#addClient() as a preparation to start interacting with it.
mInputMethodManagerService.addClient(mMockInputMethodClient, mMockRemoteInputConnection, 0);
+ createSessionForClient(mMockInputMethodClient);
}
@After
@@ -295,4 +300,13 @@ public class InputMethodManagerServiceTestBase {
.hideSoftInput(any() /* hideInputToken */, notNull() /* statsToken */,
anyInt() /* flags */, any() /* resultReceiver */);
}
+
+ protected void createSessionForClient(IInputMethodClient client) {
+ synchronized (ImfLock.class) {
+ ClientState cs = mInputMethodManagerService.getClientStateLocked(client);
+ cs.mCurSession = new InputMethodManagerService.SessionState(cs,
+ mMockInputMethodInvoker, mMockInputMethodSession, mock(
+ InputChannel.class));
+ }
+ }
}