Index: content/public/android/javatests/src/org/chromium/content/browser/input/ImeTest.java |
diff --git a/content/public/android/javatests/src/org/chromium/content/browser/input/ImeTest.java b/content/public/android/javatests/src/org/chromium/content/browser/input/ImeTest.java |
index 4dad75455237834b10fc241c89291a79c8d6caee..25427f9c01dd45dc88ed2c9e00f4d1e2bb3ca865 100644 |
--- a/content/public/android/javatests/src/org/chromium/content/browser/input/ImeTest.java |
+++ b/content/public/android/javatests/src/org/chromium/content/browser/input/ImeTest.java |
@@ -27,6 +27,7 @@ import org.chromium.base.test.util.CommandLineFlags; |
import org.chromium.base.test.util.DisabledTest; |
import org.chromium.base.test.util.Feature; |
import org.chromium.base.test.util.RetryOnFailure; |
+import org.chromium.base.test.util.UrlUtils; |
import org.chromium.base.test.util.parameter.Parameter; |
import org.chromium.base.test.util.parameter.ParameterizedTest; |
import org.chromium.content.browser.ContentViewCore; |
@@ -118,6 +119,36 @@ public class ImeTest extends ContentShellTestBase { |
resetAllStates(); |
} |
+ private void fullyLoadUrl(final String url) throws Throwable { |
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
+ @Override |
+ public void run() { |
+ getActivity().getActiveShell().loadUrl(url); |
+ } |
+ }); |
+ waitForActiveShellToBeDoneLoading(); |
+ } |
+ |
+ @MediumTest |
+ @Feature({"TextInput", "Main"}) |
+ @RetryOnFailure |
+ public void testKeyboardDismissedWhenNavigating() throws Throwable { |
+ assertWaitForKeyboardStatus(true); |
+ |
+ // Hide keyboard when loading a new Url. |
+ fullyLoadUrl(UrlUtils.getIsolatedTestFileUrl(INPUT_FORM_HTML)); |
+ assertWaitForKeyboardStatus(false); |
+ |
+ DOMUtils.clickNode(this, mContentViewCore, "input_text"); |
+ assertWaitForKeyboardStatus(true); |
+ |
+ // Hide keyboard when navigating. |
+ final String code = "document.getElementById(\"link\").click()"; |
+ JavaScriptUtils.executeJavaScriptAndWaitForResult( |
+ getContentViewCore().getWebContents(), code); |
+ assertWaitForKeyboardStatus(false); |
+ } |
+ |
@MediumTest |
@Feature({"TextInput", "Main"}) |
public void testKeyboardDismissedAfterClickingGo() throws Throwable { |
@@ -636,21 +667,15 @@ public class ImeTest extends ContentShellTestBase { |
}); |
} |
- private void reloadPage() { |
+ private void reloadPage() throws Throwable { |
// Reload the page, then focus will be lost and keyboard should be hidden. |
- ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
- @Override |
- public void run() { |
- final String currentUrl = getContentViewCore().getWebContents().getUrl(); |
- getActivity().getActiveShell().loadUrl(currentUrl); |
- } |
- }); |
+ fullyLoadUrl(getContentViewCore().getWebContents().getUrl()); |
} |
@SmallTest |
@Feature({"TextInput"}) |
@RetryOnFailure |
- public void testPhysicalKeyboard_AttachDetach() throws Exception { |
+ public void testPhysicalKeyboard_AttachDetach() throws Throwable { |
attachPhysicalKeyboard(); |
// We still call showSoftKeyboard, which will be ignored by physical keyboard. |
waitForKeyboardStates(1, 0, 1, new Integer[] {TextInputType.TEXT}); |