Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5e8ba9b6 authored by Ziqi Chen's avatar Ziqi Chen Committed by Automerger Merge Worker
Browse files

Merge "Fix test failures(bug 268231685) on TV targets" into udc-dev am: 6bbbc4bb

parents 5b2c7f20 6bbbc4bb
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ import static org.mockito.Mockito.when;
import android.app.ActivityManagerInternal;
import android.content.Context;
import android.content.pm.PackageManagerInternal;
import android.content.res.Configuration;
import android.hardware.display.DisplayManagerInternal;
import android.hardware.input.IInputManager;
import android.hardware.input.InputManagerGlobal;
@@ -121,6 +122,7 @@ public class InputMethodManagerServiceTestBase {
    protected IInputMethodInvoker mMockInputMethodInvoker;
    protected InputMethodManagerService mInputMethodManagerService;
    protected ServiceThread mServiceThread;
    protected boolean mIsLargeScreen;

    @BeforeClass
    public static void setupClass() {
@@ -145,6 +147,8 @@ public class InputMethodManagerServiceTestBase {
        spyOn(mContext);

        mTargetSdkVersion = mContext.getApplicationInfo().targetSdkVersion;
        mIsLargeScreen = mContext.getResources().getConfiguration()
                .isLayoutSizeAtLeast(Configuration.SCREENLAYOUT_SIZE_LARGE);
        mCallingUserId = UserHandle.getCallingUserId();
        mEditorInfo = new EditorInfo();
        mEditorInfo.packageName = TEST_EDITOR_PKG_NAME;
+4 −2
Original line number Diff line number Diff line
@@ -124,7 +124,8 @@ public class InputMethodManagerServiceWindowGainedFocusTest

        switch (mSoftInputState) {
            case SOFT_INPUT_STATE_UNSPECIFIED:
                boolean showSoftInput = mSoftInputAdjustment == SOFT_INPUT_ADJUST_RESIZE;
                boolean showSoftInput =
                        (mSoftInputAdjustment == SOFT_INPUT_ADJUST_RESIZE) || mIsLargeScreen;
                verifyShowSoftInput(
                        showSoftInput /* setVisible */, showSoftInput /* showSoftInput */);
                // Soft input was hidden by default, so it doesn't need to call
@@ -165,7 +166,8 @@ public class InputMethodManagerServiceWindowGainedFocusTest

        switch (mSoftInputState) {
            case SOFT_INPUT_STATE_UNSPECIFIED:
                boolean hideSoftInput = mSoftInputAdjustment != SOFT_INPUT_ADJUST_RESIZE;
                boolean hideSoftInput =
                        (mSoftInputAdjustment != SOFT_INPUT_ADJUST_RESIZE) && !mIsLargeScreen;
                verifyShowSoftInput(false /* setVisible */, false /* showSoftInput */);
                // Soft input was hidden by default, so it doesn't need to call
                // {@code IMS#hideSoftInput()}.
+14 −13
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ import static com.google.common.truth.Truth.assertThat;

import android.app.Instrumentation;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.SystemClock;
import android.platform.test.annotations.RootPermissionTest;
import android.platform.test.rule.UnlockScreenRule;
@@ -69,8 +70,6 @@ public final class AutoShowTest {
            new PressHomeBeforeTestRule();
    @Rule(order = 4) public ScreenCaptureRule mScreenCaptureRule =
            new ScreenCaptureRule("/sdcard/InputMethodStressTest");

    // TODO(b/240359838): add test case {@code Configuration.SCREENLAYOUT_SIZE_LARGE}.
    @Parameterized.Parameters(
            name = "windowFocusFlags={0}, softInputVisibility={1}, softInputAdjustment={2}")
    public static List<Object[]> windowAndSoftInputFlagParameters() {
@@ -80,11 +79,14 @@ public final class AutoShowTest {
    private final int mSoftInputFlags;
    private final int mWindowFocusFlags;
    private final Instrumentation mInstrumentation;
    private final boolean mIsLargeScreen;

    public AutoShowTest(int windowFocusFlags, int softInputVisibility, int softInputAdjustment) {
        mSoftInputFlags = softInputVisibility | softInputAdjustment;
        mWindowFocusFlags = windowFocusFlags;
        mInstrumentation = InstrumentationRegistry.getInstrumentation();
        mIsLargeScreen = mInstrumentation.getContext().getResources()
                .getConfiguration().isLayoutSizeAtLeast(Configuration.SCREENLAYOUT_SIZE_LARGE);
    }

    /**
@@ -322,8 +324,7 @@ public final class AutoShowTest {
        verifyClickBehavior(activity);
    }

    public static void verifyAutoShowBehavior_forwardWithKeyboardOff(TestActivity activity) {
        // public: also used by ImeOpenCloseStressTest
    private void verifyAutoShowBehavior_forwardWithKeyboardOff(TestActivity activity) {
        if (hasUnfocusableWindowFlags(activity)) {
            verifyImeAlwaysHiddenWithWindowFlagSet(activity);
            return;
@@ -353,12 +354,12 @@ public final class AutoShowTest {
                break;
            }
            case WindowManager.LayoutParams.SOFT_INPUT_STATE_UNSPECIFIED: {
                if (softInputAdjustment
                        == WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE) {
                if ((softInputAdjustment
                        == WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE) || mIsLargeScreen) {
                    // The current system behavior will choose to show IME automatically when
                    // navigating forward to an app that has no visibility state specified
                    // (i.e. SOFT_INPUT_STATE_UNSPECIFIED) with set SOFT_INPUT_ADJUST_RESIZE
                    // flag.
                    // flag or running on a large screen device.
                    waitOnMainUntilImeIsShown(editText);
                } else {
                    verifyImeIsAlwaysHidden(editText);
@@ -370,7 +371,7 @@ public final class AutoShowTest {
        }
    }

    private static void verifyAutoShowBehavior_forwardWithKeyboardOn(TestActivity activity) {
    private void verifyAutoShowBehavior_forwardWithKeyboardOn(TestActivity activity) {
        int windowFlags = activity.getWindow().getAttributes().flags;
        int softInputMode = activity.getWindow().getAttributes().softInputMode;
        int softInputVisibility = softInputMode & WindowManager.LayoutParams.SOFT_INPUT_MASK_STATE;
@@ -414,12 +415,12 @@ public final class AutoShowTest {
                break;
            }
            case WindowManager.LayoutParams.SOFT_INPUT_STATE_UNSPECIFIED: {
                if (softInputAdjustment
                        == WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE) {
                if ((softInputAdjustment
                        == WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE) || mIsLargeScreen) {
                    // The current system behavior will choose to show IME automatically when
                    // navigating
                    // forward to an app that has no visibility state specified  (i.e.
                    // SOFT_INPUT_STATE_UNSPECIFIED) with set SOFT_INPUT_ADJUST_RESIZE flag.
                    // navigating forward to an app that has no visibility state specified  (i.e.
                    // SOFT_INPUT_STATE_UNSPECIFIED) with set SOFT_INPUT_ADJUST_RESIZE flag or
                    // running on a large screen device.
                    waitOnMainUntilImeIsShown(editText);
                } else {
                    verifyImeIsAlwaysHidden(editText);