Index: chrome/android/javatests/src/org/chromium/chrome/browser/compositor/overlays/strip/TabStripTest.java |
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/compositor/overlays/strip/TabStripTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/compositor/overlays/strip/TabStripTest.java |
index 1646b3065fe2fddc5e47689c1f8abe41a43fbb11..59c22724cb73dc93e5b520f6305d0565f49118b2 100644 |
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/compositor/overlays/strip/TabStripTest.java |
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/compositor/overlays/strip/TabStripTest.java |
@@ -22,6 +22,10 @@ import org.chromium.chrome.test.util.ChromeRestriction; |
import org.chromium.chrome.test.util.ChromeTabUtils; |
import org.chromium.chrome.test.util.TabStripUtils; |
import org.chromium.content.browser.test.util.CallbackHelper; |
+import org.chromium.content.browser.test.util.Criteria; |
+import org.chromium.content.browser.test.util.CriteriaHelper; |
+import org.chromium.content.browser.test.util.DOMUtils; |
+import org.chromium.ui.UiUtils; |
import org.chromium.ui.base.LocalizationUtils; |
import java.util.concurrent.TimeoutException; |
@@ -657,6 +661,29 @@ public class TabStripTest extends ChromeTabbedActivityTestBase { |
} |
/** |
+ * Tests that switching tabs hides keyboard. |
+ */ |
+ @LargeTest |
+ @Restriction(ChromeRestriction.RESTRICTION_TYPE_TABLET) |
+ @Feature({"TabStrip", "IME"}) |
+ public void testSwitchingTabsHidesKeyboard() throws Throwable { |
+ loadUrl("data:text/html;charset=utf-8,<html><head></head><body><form>" |
+ + "<input type='text' id='input0'></form></body></html>"); |
+ DOMUtils.clickNode(this, getActivity().getActivityTab().getContentViewCore(), "input0"); |
+ assertWaitForKeyboardStatus(true); |
+ |
+ getInstrumentation().waitForIdleSync(); |
+ |
+ ChromeTabUtils.clickNewTabButton(this, this); |
+ |
+ getInstrumentation().waitForIdleSync(); |
+ assertEquals("Expected two tabs to exist", |
+ getActivity().getTabModelSelector().getModel(false).getCount(), 2); |
+ |
+ assertWaitForKeyboardStatus(false); |
+ } |
+ |
+ /** |
* Test that the draw positions for tabs match expectations at various scroll positions |
* when using the ScrollingStripStacker. |
*/ |
@@ -1027,4 +1054,21 @@ public class TabStripTest extends ChromeTabbedActivityTestBase { |
private void assertTabDrawX(float expectedDrawX, StripLayoutTab tabView) { |
assertEquals("Incorrect draw position for tab.", expectedDrawX, tabView.getDrawX()); |
} |
+ |
+ /** |
+ * Asserts that we get the keyboard status to be shown or hidden. |
+ * @param expectsShown Whether shown status is expected. |
+ * @throws InterruptedException |
+ */ |
+ private void assertWaitForKeyboardStatus(final boolean expectsShown) |
+ throws InterruptedException { |
+ CriteriaHelper.pollInstrumentationThread(new Criteria() { |
+ @Override |
+ public boolean isSatisfied() { |
+ updateFailureReason("expectsShown: " + expectsShown); |
+ return expectsShown == UiUtils.isKeyboardShowing(getActivity(), |
+ getActivity().getActivityTab().getView()); |
+ } |
+ }); |
+ } |
} |