| 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});
 | 
| 
 |