From c875788c8fc478ce08fb6e939ba93fb072d69e96 Mon Sep 17 00:00:00 2001 From: Cosmin Băieș Date: Thu, 20 Jul 2023 16:58:59 +0200 Subject: Improve InputMethodStressTest annotations Extract methods for requesting IME focus on the view, on the main thread, and asserting the request is successful. Update assertion messages to be more explicit about the expected outcome, and the value being asserted on. Bug: 292086579 Test: atest InputMethodStressTest Change-Id: I40fce41cb890349877cf1384d883599d15093378 --- .../inputmethod/stresstest/AutoShowTest.java | 7 +- .../stresstest/DefaultImeVisibilityTest.java | 5 +- .../stresstest/ImeOpenCloseStressTest.java | 99 +++++++++------------- .../inputmethod/stresstest/ImeStressTestUtil.java | 73 +++++++++++----- 4 files changed, 99 insertions(+), 85 deletions(-) (limited to 'tests/InputMethodStressTest/src') diff --git a/tests/InputMethodStressTest/src/com/android/inputmethod/stresstest/AutoShowTest.java b/tests/InputMethodStressTest/src/com/android/inputmethod/stresstest/AutoShowTest.java index 807f0c63668c..e60d8efdbfa4 100644 --- a/tests/InputMethodStressTest/src/com/android/inputmethod/stresstest/AutoShowTest.java +++ b/tests/InputMethodStressTest/src/com/android/inputmethod/stresstest/AutoShowTest.java @@ -23,6 +23,7 @@ import static com.android.inputmethod.stresstest.ImeStressTestUtil.UNFOCUSABLE_V import static com.android.inputmethod.stresstest.ImeStressTestUtil.callOnMainSync; import static com.android.inputmethod.stresstest.ImeStressTestUtil.getWindowAndSoftInputFlagParameters; import static com.android.inputmethod.stresstest.ImeStressTestUtil.hasUnfocusableWindowFlags; +import static com.android.inputmethod.stresstest.ImeStressTestUtil.requestFocusAndVerify; import static com.android.inputmethod.stresstest.ImeStressTestUtil.verifyImeAlwaysHiddenWithWindowFlagSet; import static com.android.inputmethod.stresstest.ImeStressTestUtil.verifyImeIsAlwaysHidden; import static com.android.inputmethod.stresstest.ImeStressTestUtil.verifyWindowAndViewFocus; @@ -225,7 +226,7 @@ public final class AutoShowTest { Intent intent1 = createIntent(mWindowFocusFlags, mSoftInputFlags, Collections.emptyList()); TestActivity firstActivity = TestActivity.start(intent1); // Request view focus after app starts - mInstrumentation.runOnMainSync(firstActivity::requestFocus); + requestFocusAndVerify(firstActivity); Intent intent2 = createIntent( @@ -252,7 +253,7 @@ public final class AutoShowTest { Intent intent1 = createIntent(mWindowFocusFlags, mSoftInputFlags, Collections.emptyList()); TestActivity activity = TestActivity.start(intent1); // Request view focus after app starts - mInstrumentation.runOnMainSync(activity::requestFocus); + requestFocusAndVerify(activity); // Create second TestActivity Intent intent2 = @@ -284,7 +285,7 @@ public final class AutoShowTest { Intent intent = createIntent(mWindowFocusFlags, mSoftInputFlags, Collections.emptyList()); TestActivity activity = TestActivity.start(intent); // Request view focus after app starts - mInstrumentation.runOnMainSync(activity::requestFocus); + requestFocusAndVerify(activity); // Find the editText and click it UiObject2 editTextUiObject = diff --git a/tests/InputMethodStressTest/src/com/android/inputmethod/stresstest/DefaultImeVisibilityTest.java b/tests/InputMethodStressTest/src/com/android/inputmethod/stresstest/DefaultImeVisibilityTest.java index 320daeeb2e54..2ac25f2696d3 100644 --- a/tests/InputMethodStressTest/src/com/android/inputmethod/stresstest/DefaultImeVisibilityTest.java +++ b/tests/InputMethodStressTest/src/com/android/inputmethod/stresstest/DefaultImeVisibilityTest.java @@ -23,6 +23,7 @@ import static com.android.compatibility.common.util.SystemUtil.eventually; import static com.android.inputmethod.stresstest.ImeStressTestUtil.REQUEST_FOCUS_ON_CREATE; import static com.android.inputmethod.stresstest.ImeStressTestUtil.TestActivity.createIntent; import static com.android.inputmethod.stresstest.ImeStressTestUtil.callOnMainSync; +import static com.android.inputmethod.stresstest.ImeStressTestUtil.requestFocusAndVerify; import static com.android.inputmethod.stresstest.ImeStressTestUtil.verifyWindowAndViewFocus; import static com.android.inputmethod.stresstest.ImeStressTestUtil.waitOnMainUntilImeIsHidden; import static com.android.inputmethod.stresstest.ImeStressTestUtil.waitOnMainUntilImeIsShown; @@ -96,7 +97,7 @@ public final class DefaultImeVisibilityTest { UiDevice uiDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()); eventually( () -> - assertWithMessage("Display rotation should be updated.") + assertWithMessage("Display rotation should have been updated") .that(uiDevice.getDisplayRotation()) .isEqualTo(mIsPortrait ? 0 : 1), TIMEOUT); @@ -104,7 +105,7 @@ public final class DefaultImeVisibilityTest { for (int i = 0; i < NUM_TEST_ITERATIONS; i++) { // TODO(b/291752364): Remove the explicit focus request once the issue with view focus // change between fullscreen IME and actual editText is fixed. - callOnMainSync(editText::requestFocus); + requestFocusAndVerify(activity); verifyWindowAndViewFocus(editText, true, true); callOnMainSync(activity::showImeWithInputMethodManager); waitOnMainUntilImeIsShown(editText); diff --git a/tests/InputMethodStressTest/src/com/android/inputmethod/stresstest/ImeOpenCloseStressTest.java b/tests/InputMethodStressTest/src/com/android/inputmethod/stresstest/ImeOpenCloseStressTest.java index 5c0212400ff1..5368025ff898 100644 --- a/tests/InputMethodStressTest/src/com/android/inputmethod/stresstest/ImeOpenCloseStressTest.java +++ b/tests/InputMethodStressTest/src/com/android/inputmethod/stresstest/ImeOpenCloseStressTest.java @@ -29,6 +29,7 @@ import static com.android.inputmethod.stresstest.ImeStressTestUtil.callOnMainSyn import static com.android.inputmethod.stresstest.ImeStressTestUtil.getWindowAndSoftInputFlagParameters; import static com.android.inputmethod.stresstest.ImeStressTestUtil.hasUnfocusableWindowFlags; import static com.android.inputmethod.stresstest.ImeStressTestUtil.isImeShown; +import static com.android.inputmethod.stresstest.ImeStressTestUtil.requestFocusAndVerify; import static com.android.inputmethod.stresstest.ImeStressTestUtil.verifyImeAlwaysHiddenWithWindowFlagSet; import static com.android.inputmethod.stresstest.ImeStressTestUtil.verifyImeIsAlwaysHidden; import static com.android.inputmethod.stresstest.ImeStressTestUtil.verifyWindowAndViewFocus; @@ -38,6 +39,9 @@ import static com.android.inputmethod.stresstest.ImeStressTestUtil.waitOnMainUnt import static com.google.common.truth.Truth.assertThat; +import static org.junit.Assume.assumeFalse; +import static org.junit.Assume.assumeTrue; + import android.app.Instrumentation; import android.content.Intent; import android.os.Build; @@ -96,7 +100,8 @@ public final class ImeOpenCloseStressTest { Intent intent = createIntent(mWindowFocusFlags, mSoftInputFlags, Collections.emptyList()); TestActivity activity = TestActivity.start(intent); // Request focus after app starts to avoid triggering auto-show behavior. - mInstrumentation.runOnMainSync(activity::requestFocus); + requestFocusAndVerify(activity); + // Test only once if window flags set to save time. int iterNum = hasUnfocusableWindowFlags(activity) ? 1 : NUM_TEST_ITERATIONS; for (int i = 0; i < iterNum; i++) { @@ -106,21 +111,19 @@ public final class ImeOpenCloseStressTest { verifyShowBehavior(activity); callOnMainSync(activity::hideImeWithInputMethodManager); - verifyHideBehavior(activity); } } @Test public void testShowHideWithInputMethodManager_waitingAnimationEnd() { + assumeFalse("Has unfocusable window flags", hasUnfocusableWindowFlags(mWindowFocusFlags)); + Intent intent = createIntent(mWindowFocusFlags, mSoftInputFlags, Collections.emptyList()); TestActivity activity = TestActivity.start(intent); // Request focus after app starts to avoid triggering auto-show behavior. - mInstrumentation.runOnMainSync(activity::requestFocus); + requestFocusAndVerify(activity); - if (hasUnfocusableWindowFlags(activity)) { - return; // Skip to save time. - } activity.enableAnimationMonitoring(); EditText editText = activity.getEditText(); for (int i = 0; i < NUM_TEST_ITERATIONS; i++) { @@ -128,12 +131,12 @@ public final class ImeOpenCloseStressTest { Log.i(TAG, msgPrefix + "start"); callOnMainSync(activity::showImeWithInputMethodManager); waitOnMainUntil( - msgPrefix + "IME should be visible", + msgPrefix + "IME should have been shown", () -> !activity.isAnimating() && isImeShown(editText)); callOnMainSync(activity::hideImeWithInputMethodManager); waitOnMainUntil( - msgPrefix + "IME should be hidden", + msgPrefix + "IME should have been hidden", () -> !activity.isAnimating() && !isImeShown(editText)); } } @@ -141,13 +144,13 @@ public final class ImeOpenCloseStressTest { @Test public void testShowHideWithInputMethodManager_intervalAfterHide() { // Regression test for b/221483132 + assumeFalse("Has unfocusable window flags", hasUnfocusableWindowFlags(mWindowFocusFlags)); + Intent intent = createIntent(mWindowFocusFlags, mSoftInputFlags, Collections.emptyList()); TestActivity activity = TestActivity.start(intent); // Request focus after app starts to avoid triggering auto-show behavior. - mInstrumentation.runOnMainSync(activity::requestFocus); - if (hasUnfocusableWindowFlags(activity)) { - return; // Skip to save time. - } + requestFocusAndVerify(activity); + // Intervals = 10, 20, 30, ..., 100, 150, 200, ... List intervals = new ArrayList<>(); for (int i = 10; i < 100; i += 10) intervals.add(i); @@ -165,14 +168,12 @@ public final class ImeOpenCloseStressTest { @Test public void testShowHideWithInputMethodManager_inSameFrame() { + assumeFalse("Has unfocusable window flags", hasUnfocusableWindowFlags(mWindowFocusFlags)); Intent intent = createIntent(mWindowFocusFlags, mSoftInputFlags, Collections.emptyList()); TestActivity activity = TestActivity.start(intent); // Request focus after app starts to avoid triggering auto-show behavior. - mInstrumentation.runOnMainSync(activity::requestFocus); + requestFocusAndVerify(activity); - if (hasUnfocusableWindowFlags(activity)) { - return; // Skip to save time. - } // hidden -> show -> hide mInstrumentation.runOnMainSync( () -> { @@ -256,13 +257,12 @@ public final class ImeOpenCloseStressTest { @Test public void testShowHideWithWindowInsetsController_waitingVisibilityChange() { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) { - return; - } + assumeTrue("Is at least Android R", Build.VERSION.SDK_INT >= Build.VERSION_CODES.R); Intent intent = createIntent(mWindowFocusFlags, mSoftInputFlags, Collections.emptyList()); TestActivity activity = TestActivity.start(intent); // Request focus after app starts to avoid triggering auto-show behavior. - mInstrumentation.runOnMainSync(activity::requestFocus); + requestFocusAndVerify(activity); + // Test only once if window flags set to save time. int iterNum = hasUnfocusableWindowFlags(activity) ? 1 : NUM_TEST_ITERATIONS; for (int i = 0; i < iterNum; i++) { @@ -277,17 +277,13 @@ public final class ImeOpenCloseStressTest { @Test public void testShowHideWithWindowInsetsController_waitingAnimationEnd() { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) { - return; - } + assumeTrue("Is at least Android R", Build.VERSION.SDK_INT >= Build.VERSION_CODES.R); + assumeFalse("Has unfocusable window flags", hasUnfocusableWindowFlags(mWindowFocusFlags)); Intent intent = createIntent(mWindowFocusFlags, mSoftInputFlags, Collections.emptyList()); TestActivity activity = TestActivity.start(intent); // Request focus after app starts to avoid triggering auto-show behavior. - mInstrumentation.runOnMainSync(activity::requestFocus); + requestFocusAndVerify(activity); - if (hasUnfocusableWindowFlags(activity)) { - return; // Skip to save time. - } activity.enableAnimationMonitoring(); EditText editText = activity.getEditText(); for (int i = 0; i < NUM_TEST_ITERATIONS; i++) { @@ -295,29 +291,25 @@ public final class ImeOpenCloseStressTest { Log.i(TAG, msgPrefix + "start"); mInstrumentation.runOnMainSync(activity::showImeWithWindowInsetsController); waitOnMainUntil( - msgPrefix + "IME should be visible", + msgPrefix + "IME should have been shown", () -> !activity.isAnimating() && isImeShown(editText)); mInstrumentation.runOnMainSync(activity::hideImeWithWindowInsetsController); waitOnMainUntil( - msgPrefix + "IME should be hidden", + msgPrefix + "IME should have been hidden", () -> !activity.isAnimating() && !isImeShown(editText)); } } @Test public void testShowHideWithWindowInsetsController_intervalAfterHide() { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) { - return; - } + assumeTrue("Is at least Android R", Build.VERSION.SDK_INT >= Build.VERSION_CODES.R); + assumeFalse("Has unfocusable window flags", hasUnfocusableWindowFlags(mWindowFocusFlags)); Intent intent = createIntent(mWindowFocusFlags, mSoftInputFlags, Collections.emptyList()); TestActivity activity = TestActivity.start(intent); // Request focus after app starts to avoid triggering auto-show behavior. - mInstrumentation.runOnMainSync(activity::requestFocus); + requestFocusAndVerify(activity); - if (hasUnfocusableWindowFlags(activity)) { - return; // Skip to save time. - } // Intervals = 10, 20, 30, ..., 100, 150, 200, ... List intervals = new ArrayList<>(); for (int i = 10; i < 100; i += 10) intervals.add(i); @@ -335,17 +327,13 @@ public final class ImeOpenCloseStressTest { @Test public void testShowHideWithWindowInsetsController_inSameFrame() { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) { - return; - } + assumeTrue("Is at least Android R", Build.VERSION.SDK_INT >= Build.VERSION_CODES.R); + assumeFalse("Has unfocusable window flags", hasUnfocusableWindowFlags(mWindowFocusFlags)); Intent intent = createIntent(mWindowFocusFlags, mSoftInputFlags, Collections.emptyList()); TestActivity activity = TestActivity.start(intent); // Request focus after app starts to avoid triggering auto-show behavior. - mInstrumentation.runOnMainSync(activity::requestFocus); + requestFocusAndVerify(activity); - if (hasUnfocusableWindowFlags(activity)) { - return; // Skip to save time. - } // hidden -> show -> hide mInstrumentation.runOnMainSync( () -> { @@ -377,9 +365,7 @@ public final class ImeOpenCloseStressTest { @Test public void testShowWithWindowInsetsController_onCreate_requestFocus() { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) { - return; - } + assumeTrue("Is at least Android R", Build.VERSION.SDK_INT >= Build.VERSION_CODES.R); // Show with InputMethodManager at onCreate() Intent intent = createIntent( @@ -394,10 +380,8 @@ public final class ImeOpenCloseStressTest { @Test public void testShowWithWindowInsetsController_onCreate_notRequestFocus() { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) { - return; - } - // Show and hide with InputMethodManager at onCreate() + assumeTrue("Is at least Android R", Build.VERSION.SDK_INT >= Build.VERSION_CODES.R); + // Show and hide with WindowInsetsController at onCreate() Intent intent = createIntent( mWindowFocusFlags, @@ -411,10 +395,8 @@ public final class ImeOpenCloseStressTest { @Test public void testShowWithWindowInsetsController_afterStart_notRequestFocus() { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) { - return; - } - // Show and hide with InputMethodManager at onCreate() + assumeTrue("Is at least Android R", Build.VERSION.SDK_INT >= Build.VERSION_CODES.R); + // Show and hide with WindowInsetsController at onCreate() Intent intent = createIntent(mWindowFocusFlags, mSoftInputFlags, Collections.emptyList()); TestActivity activity = TestActivity.start(intent); mInstrumentation.runOnMainSync(activity::showImeWithWindowInsetsController); @@ -425,7 +407,8 @@ public final class ImeOpenCloseStressTest { /** * Test IME hidden by calling show and hide IME consecutively with - * {@link android.view.WindowInsetsController} APIs in {@link android.app.Activity#onCreate}. + * {@link android.view.WindowInsetsController} APIs in + * {@link android.app.Activity#onCreate}. * *

Note for developers: Use {@link WindowManager.LayoutParams#SOFT_INPUT_STATE_UNCHANGED} * window flag to avoid some softInputMode visibility flags may take presence over @@ -436,13 +419,11 @@ public final class ImeOpenCloseStressTest { */ @Test public void testHideWithWindowInsetsController_onCreate_requestFocus() { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) { - return; - } + assumeTrue("Is at least Android R", Build.VERSION.SDK_INT >= Build.VERSION_CODES.R); if (mSoftInputFlags != SOFT_INPUT_STATE_UNCHANGED) { return; } - // Show and hide with InputMethodManager at onCreate() + // Show and hide with WindowInsetsController at onCreate() Intent intent = createIntent( mWindowFocusFlags, diff --git a/tests/InputMethodStressTest/src/com/android/inputmethod/stresstest/ImeStressTestUtil.java b/tests/InputMethodStressTest/src/com/android/inputmethod/stresstest/ImeStressTestUtil.java index 12556bcf7ded..c0c60eff0f9f 100644 --- a/tests/InputMethodStressTest/src/com/android/inputmethod/stresstest/ImeStressTestUtil.java +++ b/tests/InputMethodStressTest/src/com/android/inputmethod/stresstest/ImeStressTestUtil.java @@ -40,6 +40,7 @@ import android.view.inputmethod.InputMethodManager; import android.widget.EditText; import android.widget.LinearLayout; +import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.test.platform.app.InstrumentationRegistry; @@ -148,6 +149,14 @@ public final class ImeStressTestUtil { return result.get(); } + /** + * Requests EditText view focus on the main thread, and assert this returns {@code true}. + */ + public static void requestFocusAndVerify(TestActivity activity) { + boolean result = callOnMainSync(activity::requestFocus); + assertWithMessage("View focus request should have succeeded").that(result).isTrue(); + } + /** * Waits until {@code pred} returns true, or throws on timeout. * @@ -161,7 +170,7 @@ public final class ImeStressTestUtil { public static void waitOnMainUntilImeIsShown(View view) { eventually( () -> - assertWithMessage("IME should be shown") + assertWithMessage("IME should have been shown") .that(callOnMainSync(() -> isImeShown(view))) .isTrue(), TIMEOUT); @@ -171,27 +180,28 @@ public final class ImeStressTestUtil { public static void waitOnMainUntilImeIsHidden(View view) { eventually( () -> - assertWithMessage("IME should be hidden") + assertWithMessage("IME should have been hidden") .that(callOnMainSync(() -> isImeShown(view))) .isFalse(), TIMEOUT); } - /** Waits until window get focus, or throws on timeout. */ + /** Waits until window gains focus, or throws on timeout. */ public static void waitOnMainUntilWindowGainsFocus(View view) { eventually( () -> - assertWithMessage("Window should gain focus") + assertWithMessage( + "Window should have gained focus; value of hasWindowFocus:") .that(callOnMainSync(view::hasWindowFocus)) .isTrue(), TIMEOUT); } - /** Waits until view get focus, or throws on timeout. */ + /** Waits until view gains focus, or throws on timeout. */ public static void waitOnMainUntilViewGainsFocus(View view) { eventually( () -> - assertWithMessage("View should gain focus") + assertWithMessage("View should have gained focus; value of hasFocus:") .that(callOnMainSync(view::hasFocus)) .isTrue(), TIMEOUT); @@ -201,7 +211,7 @@ public final class ImeStressTestUtil { public static void verifyImeIsAlwaysHidden(View view) { always( () -> - assertWithMessage("IME should be hidden") + assertWithMessage("IME should have been hidden") .that(callOnMainSync(() -> isImeShown(view))) .isFalse(), TIMEOUT); @@ -211,7 +221,8 @@ public final class ImeStressTestUtil { public static void verifyWindowNeverGainsFocus(View view) { always( () -> - assertWithMessage("window should never gain focus") + assertWithMessage( + "Window should not have gained focus; value of hasWindowFocus:") .that(callOnMainSync(view::hasWindowFocus)) .isFalse(), TIMEOUT); @@ -221,7 +232,7 @@ public final class ImeStressTestUtil { public static void verifyViewNeverGainsFocus(View view) { always( () -> - assertWithMessage("view should never gain ime focus") + assertWithMessage("View should not have gained focus; value of hasFocus:") .that(callOnMainSync(view::hasFocus)) .isFalse(), TIMEOUT); @@ -254,8 +265,23 @@ public final class ImeStressTestUtil { } } + /** + * Returns {@code true} if the activity can't receive IME focus, based on its window flags, + * and {@code false} otherwise. + * + * @param activity the activity to check. + */ public static boolean hasUnfocusableWindowFlags(Activity activity) { - int windowFlags = activity.getWindow().getAttributes().flags; + return hasUnfocusableWindowFlags(activity.getWindow().getAttributes().flags); + } + + /** + * Returns {@code true} if the activity can't receive IME focus, based on its window flags, + * and {@code false} otherwise. + * + * @param windowFlags the window flags to check. + */ + public static boolean hasUnfocusableWindowFlags(int windowFlags) { return (windowFlags & LayoutParams.FLAG_NOT_FOCUSABLE) != 0 || (windowFlags & LayoutParams.FLAG_ALT_FOCUSABLE_IM) != 0 || (windowFlags & LayoutParams.FLAG_LOCAL_FOCUS_MODE) != 0; @@ -302,22 +328,26 @@ public final class ImeStressTestUtil { private final WindowInsetsAnimation.Callback mWindowInsetsAnimationCallback = new WindowInsetsAnimation.Callback(DISPATCH_MODE_STOP) { + @NonNull @Override public WindowInsetsAnimation.Bounds onStart( - WindowInsetsAnimation animation, WindowInsetsAnimation.Bounds bounds) { + @NonNull WindowInsetsAnimation animation, + @NonNull WindowInsetsAnimation.Bounds bounds) { mIsAnimating = true; return super.onStart(animation, bounds); } @Override - public void onEnd(WindowInsetsAnimation animation) { + public void onEnd(@NonNull WindowInsetsAnimation animation) { super.onEnd(animation); mIsAnimating = false; } + @NonNull @Override public WindowInsets onProgress( - WindowInsets insets, List runningAnimations) { + @NonNull WindowInsets insets, + @NonNull List runningAnimations) { return insets; } }; @@ -394,7 +424,7 @@ public final class ImeStressTestUtil { getInputMethodManager() .showSoftInput(mEditText, 0 /* flags */); if (showResult) { - Log.i(TAG, "IMM#showSoftInput successfully"); + Log.i(TAG, "IMM#showSoftInput succeeded"); } else { Log.i(TAG, "IMM#showSoftInput failed"); } @@ -407,7 +437,7 @@ public final class ImeStressTestUtil { getInputMethodManager() .hideSoftInputFromWindow(mEditText.getWindowToken(), 0 /* flags */); if (hideResult) { - Log.i(TAG, "IMM#hideSoftInput successfully"); + Log.i(TAG, "IMM#hideSoftInput succeeded"); } else { Log.i(TAG, "IMM#hideSoftInput failed"); } @@ -421,7 +451,7 @@ public final class ImeStressTestUtil { } Log.i(TAG, "showImeWithWIC()"); WindowInsetsController windowInsetsController = mEditText.getWindowInsetsController(); - assertWithMessage("WindowInsetsController shouldn't be null.") + assertWithMessage("WindowInsetsController") .that(windowInsetsController) .isNotNull(); windowInsetsController.show(WindowInsets.Type.ime()); @@ -434,7 +464,7 @@ public final class ImeStressTestUtil { } Log.i(TAG, "hideImeWithWIC()"); WindowInsetsController windowInsetsController = mEditText.getWindowInsetsController(); - assertWithMessage("WindowInsetsController shouldn't be null.") + assertWithMessage("WindowInsetsController") .that(windowInsetsController) .isNotNull(); windowInsetsController.hide(WindowInsets.Type.ime()); @@ -482,13 +512,14 @@ public final class ImeStressTestUtil { return mIsAnimating; } - public void requestFocus() { - boolean requestFocusResult = getEditText().requestFocus(); + public boolean requestFocus() { + boolean requestFocusResult = mEditText.requestFocus(); if (requestFocusResult) { - Log.i(TAG, "Request focus successfully"); + Log.i(TAG, "View#requestFocus succeeded"); } else { - Log.i(TAG, "Request focus failed"); + Log.i(TAG, "View#requestFocus failed"); } + return requestFocusResult; } } } -- cgit v1.2.3-59-g8ed1b