summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/globalactions/GlobalActionsImeTest.java34
1 files changed, 24 insertions, 10 deletions
diff --git a/packages/SystemUI/tests/src/com/android/systemui/globalactions/GlobalActionsImeTest.java b/packages/SystemUI/tests/src/com/android/systemui/globalactions/GlobalActionsImeTest.java
index f38c722ad2db..8b254e3a2df0 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/globalactions/GlobalActionsImeTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/globalactions/GlobalActionsImeTest.java
@@ -60,8 +60,13 @@ public class GlobalActionsImeTest extends SysuiTestCase {
public void testGlobalActions_doesntStealImeControl() throws Exception {
turnScreenOn();
final TestActivity activity = mActivityTestRule.launchActivity(null);
-
- waitUntil("Ime is visible", activity::isImeVisible);
+ boolean isImeVisible = waitUntil(activity::isImeVisible);
+ if (!isImeVisible) {
+ // Sometimes the keyboard is dismissed when run with other tests. Bringing it up again
+ // should improve test reliability
+ activity.showIme();
+ waitUntil("Ime is not visible", activity::isImeVisible);
+ }
executeShellCommand("input keyevent --longpress POWER");
@@ -91,17 +96,23 @@ public class GlobalActionsImeTest extends SysuiTestCase {
private static void waitUntil(String message, BooleanSupplier predicate)
throws Exception {
+ if (!waitUntil(predicate)) {
+ fail(message);
+ }
+ }
+
+ private static boolean waitUntil(BooleanSupplier predicate) throws Exception {
int sleep = 125;
final long timeout = SystemClock.uptimeMillis() + 10_000; // 10 second timeout
while (SystemClock.uptimeMillis() < timeout) {
if (predicate.getAsBoolean()) {
- return; // okay
+ return true;
}
Thread.sleep(sleep);
sleep *= 5;
sleep = Math.min(2000, sleep);
}
- fail(message);
+ return false;
}
private static void executeShellCommand(String cmd) {
@@ -130,6 +141,7 @@ public class GlobalActionsImeTest extends SysuiTestCase {
WindowInsetsController.OnControllableInsetsChangedListener,
View.OnApplyWindowInsetsListener {
+ private EditText mEditText;
boolean mHasFocus;
boolean mControlsIme;
boolean mImeVisible;
@@ -137,14 +149,16 @@ public class GlobalActionsImeTest extends SysuiTestCase {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ mEditText = new EditText(this);
+ mEditText.setCursorVisible(false); // Otherwise, main thread doesn't go idle.
+ setContentView(mEditText);
+ showIme();
+ }
- EditText content = new EditText(this);
- content.setCursorVisible(false); // Otherwise, main thread doesn't go idle.
- setContentView(content);
- content.requestFocus();
-
+ private void showIme() {
+ mEditText.requestFocus();
getWindow().getDecorView().setOnApplyWindowInsetsListener(this);
- WindowInsetsController wic = content.getWindowInsetsController();
+ WindowInsetsController wic = mEditText.getWindowInsetsController();
wic.addOnControllableInsetsChangedListener(this);
wic.show(ime());
}