| 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 2d72f2fe60c4061c09caca082eef0c3bcb48edb5..1a3c3e66db09a0394dd1654bcc359130efe6a6e7 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
 | 
| @@ -31,6 +31,7 @@ import org.chromium.content.browser.test.util.DOMUtils;
 | 
|  import org.chromium.content.browser.test.util.JavaScriptUtils;
 | 
|  import org.chromium.ui.base.ime.TextInputType;
 | 
|  
 | 
| +import java.util.ArrayList;
 | 
|  import java.util.concurrent.Callable;
 | 
|  
 | 
|  /**
 | 
| @@ -421,6 +422,69 @@ public class ImeTest {
 | 
|          Assert.assertEquals(5, mRule.getConnectionFactory().getOutAttrs().initialSelEnd);
 | 
|      }
 | 
|  
 | 
| +    private static int getImeAction(EditorInfo editorInfo) {
 | 
| +        return editorInfo.imeOptions & EditorInfo.IME_MASK_ACTION;
 | 
| +    }
 | 
| +
 | 
| +    @Test
 | 
| +    @SmallTest
 | 
| +    @Feature({"TextInput", "Main"})
 | 
| +    public void testAdvanceFocusNextAndPrevious() throws Exception {
 | 
| +        mRule.focusElement("textarea");
 | 
| +        // Forward direction focus. Excessive focus advance should be ignored.
 | 
| +        for (int i = 0; i < 10; ++i) {
 | 
| +            // Forward direction focus.
 | 
| +            mRule.performEditorAction(EditorInfo.IME_ACTION_NEXT);
 | 
| +        }
 | 
| +        mRule.waitForKeyboardStates(7, 0, 7,
 | 
| +                new Integer[] {TextInputType.TEXT_AREA, TextInputType.TEXT_AREA,
 | 
| +                        TextInputType.NUMBER, TextInputType.NUMBER, TextInputType.CONTENT_EDITABLE,
 | 
| +                        TextInputType.SEARCH, TextInputType.TEXT});
 | 
| +        ArrayList<EditorInfo> editorInfoList =
 | 
| +                mRule.getInputMethodManagerWrapper().getEditorInfoList();
 | 
| +        Assert.assertEquals(7, editorInfoList.size());
 | 
| +        // textarea.
 | 
| +        Assert.assertEquals(EditorInfo.IME_ACTION_NONE, getImeAction(editorInfoList.get(0)));
 | 
| +        // textarea2.
 | 
| +        Assert.assertEquals(EditorInfo.IME_ACTION_NONE, getImeAction(editorInfoList.get(1)));
 | 
| +        // input_number1.
 | 
| +        Assert.assertEquals(EditorInfo.IME_ACTION_NEXT, getImeAction(editorInfoList.get(2)));
 | 
| +        // input_number2.
 | 
| +        Assert.assertEquals(EditorInfo.IME_ACTION_NEXT, getImeAction(editorInfoList.get(3)));
 | 
| +        // content_editable1.
 | 
| +        Assert.assertEquals(EditorInfo.IME_ACTION_NONE, getImeAction(editorInfoList.get(4)));
 | 
| +        // search1.
 | 
| +        Assert.assertEquals(EditorInfo.IME_ACTION_SEARCH, getImeAction(editorInfoList.get(5)));
 | 
| +        // input_text1.
 | 
| +        Assert.assertEquals(EditorInfo.IME_ACTION_GO, getImeAction(editorInfoList.get(6)));
 | 
| +
 | 
| +        mRule.resetAllStates();
 | 
| +
 | 
| +        // Backward direction focus. Excessive focus advance should be ignored.
 | 
| +        for (int i = 0; i < 10; ++i) {
 | 
| +            // Backward direction focus.
 | 
| +            mRule.performEditorAction(EditorInfo.IME_ACTION_PREVIOUS);
 | 
| +        }
 | 
| +        mRule.waitForKeyboardStates(6, 0, 6,
 | 
| +                new Integer[] {TextInputType.SEARCH, TextInputType.CONTENT_EDITABLE,
 | 
| +                        TextInputType.NUMBER, TextInputType.NUMBER, TextInputType.TEXT_AREA,
 | 
| +                        TextInputType.TEXT_AREA});
 | 
| +        editorInfoList = mRule.getInputMethodManagerWrapper().getEditorInfoList();
 | 
| +        Assert.assertEquals(6, editorInfoList.size());
 | 
| +        // search1.
 | 
| +        Assert.assertEquals(EditorInfo.IME_ACTION_SEARCH, getImeAction(editorInfoList.get(0)));
 | 
| +        // content_editable1.
 | 
| +        Assert.assertEquals(EditorInfo.IME_ACTION_NONE, getImeAction(editorInfoList.get(1)));
 | 
| +        // input_number2.
 | 
| +        Assert.assertEquals(EditorInfo.IME_ACTION_NEXT, getImeAction(editorInfoList.get(2)));
 | 
| +        // input_number1.
 | 
| +        Assert.assertEquals(EditorInfo.IME_ACTION_NEXT, getImeAction(editorInfoList.get(3)));
 | 
| +        // textarea2.
 | 
| +        Assert.assertEquals(EditorInfo.IME_ACTION_NONE, getImeAction(editorInfoList.get(4)));
 | 
| +        // textarea.
 | 
| +        Assert.assertEquals(EditorInfo.IME_ACTION_NONE, getImeAction(editorInfoList.get(5)));
 | 
| +    }
 | 
| +
 | 
|      @Test
 | 
|      @SmallTest
 | 
|      @Feature({"TextInput"})
 | 
| 
 |