Loading java/src/com/android/inputmethod/latin/InputAttributes.java +5 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ public final class InputAttributes { final public boolean mInputTypeNoAutoCorrect; final public boolean mIsSettingsSuggestionStripOn; final public boolean mApplicationSpecifiedCompletionOn; final public boolean mShouldInsertSpacesAutomatically; final private int mInputType; public InputAttributes(final EditorInfo editorInfo, final boolean isFullscreenMode) { Loading @@ -54,6 +55,7 @@ public final class InputAttributes { mIsSettingsSuggestionStripOn = false; mInputTypeNoAutoCorrect = false; mApplicationSpecifiedCompletionOn = false; mShouldInsertSpacesAutomatically = false; } else { final int variation = inputType & InputType.TYPE_MASK_VARIATION; final boolean flagNoSuggestions = Loading @@ -65,6 +67,7 @@ public final class InputAttributes { final boolean flagAutoComplete = 0 != (inputType & InputType.TYPE_TEXT_FLAG_AUTO_COMPLETE); // TODO: Have a helper method in InputTypeUtils // Make sure that passwords are not displayed in {@link SuggestionStripView}. if (InputTypeUtils.isPasswordInputType(inputType) || InputTypeUtils.isVisiblePasswordInputType(inputType) Loading @@ -78,6 +81,8 @@ public final class InputAttributes { mIsSettingsSuggestionStripOn = true; } mShouldInsertSpacesAutomatically = InputTypeUtils.isAutoSpaceFriendlyType(inputType); // If it's a browser edit field and auto correct is not ON explicitly, then // disable auto correction, but keep suggestions on. // If NO_SUGGESTIONS is set, don't do prediction. Loading java/src/com/android/inputmethod/latin/InputTypeUtils.java +24 −9 Original line number Diff line number Diff line Loading @@ -29,31 +29,37 @@ public final class InputTypeUtils implements InputType { TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_PASSWORD; private static final int TEXT_VISIBLE_PASSWORD_INPUT_TYPE = TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_VISIBLE_PASSWORD; private static final int[] SUPPRESSING_AUTO_SPACES_FIELD_VARIATION = { InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS, InputType.TYPE_TEXT_VARIATION_PASSWORD, InputType.TYPE_TEXT_VARIATION_URI, InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD, InputType.TYPE_TEXT_VARIATION_WEB_PASSWORD }; private InputTypeUtils() { // This utility class is not publicly instantiable. } private static boolean isWebEditTextInputType(int inputType) { private static boolean isWebEditTextInputType(final int inputType) { return inputType == (TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_WEB_EDIT_TEXT); } private static boolean isWebPasswordInputType(int inputType) { private static boolean isWebPasswordInputType(final int inputType) { return WEB_TEXT_PASSWORD_INPUT_TYPE != 0 && inputType == WEB_TEXT_PASSWORD_INPUT_TYPE; } private static boolean isWebEmailAddressInputType(int inputType) { private static boolean isWebEmailAddressInputType(final int inputType) { return WEB_TEXT_EMAIL_ADDRESS_INPUT_TYPE != 0 && inputType == WEB_TEXT_EMAIL_ADDRESS_INPUT_TYPE; } private static boolean isNumberPasswordInputType(int inputType) { private static boolean isNumberPasswordInputType(final int inputType) { return NUMBER_PASSWORD_INPUT_TYPE != 0 && inputType == NUMBER_PASSWORD_INPUT_TYPE; } private static boolean isTextPasswordInputType(int inputType) { private static boolean isTextPasswordInputType(final int inputType) { return inputType == TEXT_PASSWORD_INPUT_TYPE; } Loading @@ -61,12 +67,12 @@ public final class InputTypeUtils implements InputType { return variation == TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS; } public static boolean isEmailVariation(int variation) { public static boolean isEmailVariation(final int variation) { return variation == TYPE_TEXT_VARIATION_EMAIL_ADDRESS || isWebEmailAddressVariation(variation); } public static boolean isWebInputType(int inputType) { public static boolean isWebInputType(final int inputType) { final int maskedInputType = inputType & (TYPE_MASK_CLASS | TYPE_MASK_VARIATION); return isWebEditTextInputType(maskedInputType) || isWebPasswordInputType(maskedInputType) Loading @@ -74,7 +80,7 @@ public final class InputTypeUtils implements InputType { } // Please refer to TextView.isPasswordInputType public static boolean isPasswordInputType(int inputType) { public static boolean isPasswordInputType(final int inputType) { final int maskedInputType = inputType & (TYPE_MASK_CLASS | TYPE_MASK_VARIATION); return isTextPasswordInputType(maskedInputType) || isWebPasswordInputType(maskedInputType) Loading @@ -82,9 +88,18 @@ public final class InputTypeUtils implements InputType { } // Please refer to TextView.isVisiblePasswordInputType public static boolean isVisiblePasswordInputType(int inputType) { public static boolean isVisiblePasswordInputType(final int inputType) { final int maskedInputType = inputType & (TYPE_MASK_CLASS | TYPE_MASK_VARIATION); return maskedInputType == TEXT_VISIBLE_PASSWORD_INPUT_TYPE; } public static boolean isAutoSpaceFriendlyType(final int inputType) { if (TYPE_CLASS_TEXT != (TYPE_MASK_CLASS & inputType)) return false; final int variation = TYPE_MASK_VARIATION & inputType; for (final int fieldVariation : SUPPRESSING_AUTO_SPACES_FIELD_VARIATION) { if (variation == fieldVariation) return false; } return true; } } java/src/com/android/inputmethod/latin/LatinIME.java +3 −1 Original line number Diff line number Diff line Loading @@ -2257,8 +2257,10 @@ public final class LatinIME extends InputMethodService implements KeyboardAction // This essentially inserts a space, and that's it. public void promotePhantomSpace() { if (mCurrentSettings.shouldInsertSpacesAutomatically()) { sendKeyCodePoint(Keyboard.CODE_SPACE); } } // Used by the RingCharBuffer public boolean isWordSeparator(final int code) { Loading java/src/com/android/inputmethod/latin/SettingsValues.java +4 −0 Original line number Diff line number Diff line Loading @@ -271,6 +271,10 @@ public final class SettingsValues { return mPhantomSpacePromotingSymbols.contains(String.valueOf((char)code)); } public boolean shouldInsertSpacesAutomatically() { return mInputAttributes.mShouldInsertSpacesAutomatically; } private static boolean isAutoCorrectEnabled(final Resources res, final String currentAutoCorrectionSetting) { final String autoCorrectionOff = res.getString( Loading Loading
java/src/com/android/inputmethod/latin/InputAttributes.java +5 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ public final class InputAttributes { final public boolean mInputTypeNoAutoCorrect; final public boolean mIsSettingsSuggestionStripOn; final public boolean mApplicationSpecifiedCompletionOn; final public boolean mShouldInsertSpacesAutomatically; final private int mInputType; public InputAttributes(final EditorInfo editorInfo, final boolean isFullscreenMode) { Loading @@ -54,6 +55,7 @@ public final class InputAttributes { mIsSettingsSuggestionStripOn = false; mInputTypeNoAutoCorrect = false; mApplicationSpecifiedCompletionOn = false; mShouldInsertSpacesAutomatically = false; } else { final int variation = inputType & InputType.TYPE_MASK_VARIATION; final boolean flagNoSuggestions = Loading @@ -65,6 +67,7 @@ public final class InputAttributes { final boolean flagAutoComplete = 0 != (inputType & InputType.TYPE_TEXT_FLAG_AUTO_COMPLETE); // TODO: Have a helper method in InputTypeUtils // Make sure that passwords are not displayed in {@link SuggestionStripView}. if (InputTypeUtils.isPasswordInputType(inputType) || InputTypeUtils.isVisiblePasswordInputType(inputType) Loading @@ -78,6 +81,8 @@ public final class InputAttributes { mIsSettingsSuggestionStripOn = true; } mShouldInsertSpacesAutomatically = InputTypeUtils.isAutoSpaceFriendlyType(inputType); // If it's a browser edit field and auto correct is not ON explicitly, then // disable auto correction, but keep suggestions on. // If NO_SUGGESTIONS is set, don't do prediction. Loading
java/src/com/android/inputmethod/latin/InputTypeUtils.java +24 −9 Original line number Diff line number Diff line Loading @@ -29,31 +29,37 @@ public final class InputTypeUtils implements InputType { TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_PASSWORD; private static final int TEXT_VISIBLE_PASSWORD_INPUT_TYPE = TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_VISIBLE_PASSWORD; private static final int[] SUPPRESSING_AUTO_SPACES_FIELD_VARIATION = { InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS, InputType.TYPE_TEXT_VARIATION_PASSWORD, InputType.TYPE_TEXT_VARIATION_URI, InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD, InputType.TYPE_TEXT_VARIATION_WEB_PASSWORD }; private InputTypeUtils() { // This utility class is not publicly instantiable. } private static boolean isWebEditTextInputType(int inputType) { private static boolean isWebEditTextInputType(final int inputType) { return inputType == (TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_WEB_EDIT_TEXT); } private static boolean isWebPasswordInputType(int inputType) { private static boolean isWebPasswordInputType(final int inputType) { return WEB_TEXT_PASSWORD_INPUT_TYPE != 0 && inputType == WEB_TEXT_PASSWORD_INPUT_TYPE; } private static boolean isWebEmailAddressInputType(int inputType) { private static boolean isWebEmailAddressInputType(final int inputType) { return WEB_TEXT_EMAIL_ADDRESS_INPUT_TYPE != 0 && inputType == WEB_TEXT_EMAIL_ADDRESS_INPUT_TYPE; } private static boolean isNumberPasswordInputType(int inputType) { private static boolean isNumberPasswordInputType(final int inputType) { return NUMBER_PASSWORD_INPUT_TYPE != 0 && inputType == NUMBER_PASSWORD_INPUT_TYPE; } private static boolean isTextPasswordInputType(int inputType) { private static boolean isTextPasswordInputType(final int inputType) { return inputType == TEXT_PASSWORD_INPUT_TYPE; } Loading @@ -61,12 +67,12 @@ public final class InputTypeUtils implements InputType { return variation == TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS; } public static boolean isEmailVariation(int variation) { public static boolean isEmailVariation(final int variation) { return variation == TYPE_TEXT_VARIATION_EMAIL_ADDRESS || isWebEmailAddressVariation(variation); } public static boolean isWebInputType(int inputType) { public static boolean isWebInputType(final int inputType) { final int maskedInputType = inputType & (TYPE_MASK_CLASS | TYPE_MASK_VARIATION); return isWebEditTextInputType(maskedInputType) || isWebPasswordInputType(maskedInputType) Loading @@ -74,7 +80,7 @@ public final class InputTypeUtils implements InputType { } // Please refer to TextView.isPasswordInputType public static boolean isPasswordInputType(int inputType) { public static boolean isPasswordInputType(final int inputType) { final int maskedInputType = inputType & (TYPE_MASK_CLASS | TYPE_MASK_VARIATION); return isTextPasswordInputType(maskedInputType) || isWebPasswordInputType(maskedInputType) Loading @@ -82,9 +88,18 @@ public final class InputTypeUtils implements InputType { } // Please refer to TextView.isVisiblePasswordInputType public static boolean isVisiblePasswordInputType(int inputType) { public static boolean isVisiblePasswordInputType(final int inputType) { final int maskedInputType = inputType & (TYPE_MASK_CLASS | TYPE_MASK_VARIATION); return maskedInputType == TEXT_VISIBLE_PASSWORD_INPUT_TYPE; } public static boolean isAutoSpaceFriendlyType(final int inputType) { if (TYPE_CLASS_TEXT != (TYPE_MASK_CLASS & inputType)) return false; final int variation = TYPE_MASK_VARIATION & inputType; for (final int fieldVariation : SUPPRESSING_AUTO_SPACES_FIELD_VARIATION) { if (variation == fieldVariation) return false; } return true; } }
java/src/com/android/inputmethod/latin/LatinIME.java +3 −1 Original line number Diff line number Diff line Loading @@ -2257,8 +2257,10 @@ public final class LatinIME extends InputMethodService implements KeyboardAction // This essentially inserts a space, and that's it. public void promotePhantomSpace() { if (mCurrentSettings.shouldInsertSpacesAutomatically()) { sendKeyCodePoint(Keyboard.CODE_SPACE); } } // Used by the RingCharBuffer public boolean isWordSeparator(final int code) { Loading
java/src/com/android/inputmethod/latin/SettingsValues.java +4 −0 Original line number Diff line number Diff line Loading @@ -271,6 +271,10 @@ public final class SettingsValues { return mPhantomSpacePromotingSymbols.contains(String.valueOf((char)code)); } public boolean shouldInsertSpacesAutomatically() { return mInputAttributes.mShouldInsertSpacesAutomatically; } private static boolean isAutoCorrectEnabled(final Resources res, final String currentAutoCorrectionSetting) { final String autoCorrectionOff = res.getString( Loading