 Chromium Code Reviews
 Chromium Code Reviews Issue 2839993002:
  [Android] Adding Smart GO/NEXT feature in Chrome  (Closed)
    
  
    Issue 2839993002:
  [Android] Adding Smart GO/NEXT feature in Chrome  (Closed) 
  | Index: content/public/android/java/src/org/chromium/content/browser/input/ImeUtils.java | 
| diff --git a/content/public/android/java/src/org/chromium/content/browser/input/ImeUtils.java b/content/public/android/java/src/org/chromium/content/browser/input/ImeUtils.java | 
| index 49726776c49baedb8e0e14ee3e365a438b160e87..2a69c599e19ef0c629fd629c1ac0f0000627644e 100644 | 
| --- a/content/public/android/java/src/org/chromium/content/browser/input/ImeUtils.java | 
| +++ b/content/public/android/java/src/org/chromium/content/browser/input/ImeUtils.java | 
| @@ -49,7 +49,6 @@ public class ImeUtils { | 
| if (inputMode == WebTextInputMode.DEFAULT) { | 
| if (inputType == TextInputType.TEXT) { | 
| // Normal text field | 
| - imeAction = EditorInfo.IME_ACTION_GO; | 
| if ((inputFlags & WebTextInputFlags.AUTOCORRECT_OFF) == 0) { | 
| outAttrs.inputType |= EditorInfo.TYPE_TEXT_FLAG_AUTO_CORRECT; | 
| } | 
| @@ -59,33 +58,27 @@ public class ImeUtils { | 
| if ((inputFlags & WebTextInputFlags.AUTOCORRECT_OFF) == 0) { | 
| outAttrs.inputType |= EditorInfo.TYPE_TEXT_FLAG_AUTO_CORRECT; | 
| } | 
| - imeAction = EditorInfo.IME_ACTION_NONE; | 
| } else if (inputType == TextInputType.PASSWORD) { | 
| outAttrs.inputType = | 
| InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_WEB_PASSWORD; | 
| - imeAction = EditorInfo.IME_ACTION_GO; | 
| } else if (inputType == TextInputType.SEARCH) { | 
| imeAction = EditorInfo.IME_ACTION_SEARCH; | 
| 
Changwan Ryu
2017/05/11 22:57:12
I didn't notice this earlier, but you're overridin
 
AKVT
2017/05/12 13:26:25
Done.
 | 
| } else if (inputType == TextInputType.URL) { | 
| outAttrs.inputType = InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_URI; | 
| - imeAction = EditorInfo.IME_ACTION_GO; | 
| } else if (inputType == TextInputType.EMAIL) { | 
| outAttrs.inputType = | 
| InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS; | 
| - imeAction = EditorInfo.IME_ACTION_GO; | 
| } else if (inputType == TextInputType.TELEPHONE) { | 
| // Telephone | 
| // Number and telephone do not have both a Tab key and an | 
| // action in default OSK, so set the action to NEXT | 
| outAttrs.inputType = InputType.TYPE_CLASS_PHONE; | 
| - imeAction = EditorInfo.IME_ACTION_NEXT; | 
| } else if (inputType == TextInputType.NUMBER) { | 
| // Number | 
| outAttrs.inputType = InputType.TYPE_CLASS_NUMBER | 
| | InputType.TYPE_NUMBER_VARIATION_NORMAL | 
| | InputType.TYPE_NUMBER_FLAG_DECIMAL; | 
| - imeAction = EditorInfo.IME_ACTION_NEXT; | 
| } | 
| } else { | 
| switch (inputMode) { | 
| @@ -103,31 +96,40 @@ public class ImeUtils { | 
| if ((inputFlags & WebTextInputFlags.AUTOCORRECT_OFF) == 0) { | 
| outAttrs.inputType |= EditorInfo.TYPE_TEXT_FLAG_AUTO_CORRECT; | 
| } | 
| - imeAction = EditorInfo.IME_ACTION_NONE; | 
| break; | 
| case WebTextInputMode.NUMERIC: | 
| outAttrs.inputType = | 
| InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_NORMAL; | 
| - imeAction = EditorInfo.IME_ACTION_NEXT; | 
| break; | 
| case WebTextInputMode.TEL: | 
| outAttrs.inputType = InputType.TYPE_CLASS_PHONE; | 
| - imeAction = EditorInfo.IME_ACTION_NEXT; | 
| break; | 
| case WebTextInputMode.EMAIL: | 
| outAttrs.inputType = InputType.TYPE_CLASS_TEXT | 
| | InputType.TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS; | 
| - imeAction = EditorInfo.IME_ACTION_GO; | 
| break; | 
| case WebTextInputMode.URL: | 
| outAttrs.inputType = | 
| InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_URI; | 
| - imeAction = EditorInfo.IME_ACTION_NEXT; | 
| break; | 
| } | 
| } | 
| outAttrs.imeOptions |= imeAction; | 
| + | 
| + // For multiline text or any text input with key event listeners, ENTER key is needed. | 
| + if ((outAttrs.inputType & EditorInfo.TYPE_TEXT_FLAG_MULTI_LINE) != 0) { | 
| + // For textarea that sends you to another webpage on enter key press using | 
| + // JavaScript, we will only show ENTER. | 
| + outAttrs.imeOptions |= EditorInfo.IME_ACTION_NONE; | 
| + } else if ((inputFlags & WebTextInputFlags.HAVE_NEXT_FOCUSABLE_ELEMENT) != 0) { | 
| + outAttrs.imeOptions |= EditorInfo.IME_ACTION_NEXT; | 
| + } else { | 
| + // For last element inside form, we should give preference to GO key as PREVIOUS | 
| + // has less importance in those cases. | 
| + outAttrs.imeOptions |= EditorInfo.IME_ACTION_GO; | 
| + } | 
| + | 
| // Handling of autocapitalize. Blink will send the flag taking into account the element's | 
| // type. This is not using AutocapitalizeNone because Android does not autocapitalize by | 
| // default and there is no way to express no capitalization. |