Merge "Fix test failures(bug 268231685) on TV targets" into udc-dev
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 bb3a476..90691a7 100644
--- a/services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/InputMethodManagerServiceTestBase.java
+++ b/services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/InputMethodManagerServiceTestBase.java
@@ -34,6 +34,7 @@
 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 @@
     protected IInputMethodInvoker mMockInputMethodInvoker;
     protected InputMethodManagerService mInputMethodManagerService;
     protected ServiceThread mServiceThread;
+    protected boolean mIsLargeScreen;
 
     @BeforeClass
     public static void setupClass() {
@@ -145,6 +147,8 @@
         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;
diff --git a/services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/InputMethodManagerServiceWindowGainedFocusTest.java b/services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/InputMethodManagerServiceWindowGainedFocusTest.java
index c6b355c..cea65b5 100644
--- a/services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/InputMethodManagerServiceWindowGainedFocusTest.java
+++ b/services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/InputMethodManagerServiceWindowGainedFocusTest.java
@@ -124,7 +124,8 @@
 
         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 @@
 
         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()}.
diff --git a/tests/InputMethodStressTest/src/com/android/inputmethod/stresstest/AutoShowTest.java b/tests/InputMethodStressTest/src/com/android/inputmethod/stresstest/AutoShowTest.java
index 0c7e452..9c70e6e 100644
--- a/tests/InputMethodStressTest/src/com/android/inputmethod/stresstest/AutoShowTest.java
+++ b/tests/InputMethodStressTest/src/com/android/inputmethod/stresstest/AutoShowTest.java
@@ -32,6 +32,7 @@
 
 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 @@
             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 @@
     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 @@
         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 @@
                 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 @@
         }
     }
 
-    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 @@
                 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);