Loading java/proguard.flags +5 −16 Original line number Diff line number Diff line Loading @@ -3,18 +3,15 @@ <init>(...); } -keep class com.android.inputmethod.latin.Flag { *; } -keep class com.android.inputmethod.latin.Suggest { <init>(...); com.android.inputmethod.latin.SuggestedWords getSuggestions(...); } -keep class com.android.inputmethod.latin.UserBigramDictionary { void setDatabaseMax(int); void setDatabaseDelete(int); void waitUntilUpdateDBDone(); void waitForDictionaryLoading(); } -keep class com.android.inputmethod.latin.AutoCorrection { java.lang.CharSequence getAutoCorrectionWord(); } Loading @@ -23,18 +20,10 @@ boolean equalsIgnoreCase(...); } -keep class com.android.inputmethod.latin.spellcheck.SpellChecker { *; } -keep class com.android.inputmethod.latin.spellcheck.SpellCheckerSettingsFragment { *; } -keep class com.android.inputmethod.latin.SettingsActivity { *; } -keep class com.android.inputmethod.keyboard.LatinKeyboardView { # Keep getter/setter methods for ObjectAnimator int getLanguageOnSpacebarAnimAlpha(); Loading java/src/com/android/inputmethod/compat/InputConnectionCompatUtils.javadeleted 100644 → 0 +0 −80 Original line number Diff line number Diff line /* * Copyright (C) 2011 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.inputmethod.compat; import com.android.inputmethod.latin.EditingUtils.SelectedWord; import android.view.inputmethod.InputConnection; import java.lang.reflect.Constructor; import java.lang.reflect.Method; public class InputConnectionCompatUtils { private static final Class<?> CLASS_CorrectionInfo = CompatUtils .getClass("android.view.inputmethod.CorrectionInfo"); private static final Class<?>[] INPUT_TYPE_CorrectionInfo = new Class<?>[] { int.class, CharSequence.class, CharSequence.class }; private static final Constructor<?> CONSTRUCTOR_CorrectionInfo = CompatUtils .getConstructor(CLASS_CorrectionInfo, INPUT_TYPE_CorrectionInfo); private static final Method METHOD_InputConnection_commitCorrection = CompatUtils .getMethod(InputConnection.class, "commitCorrection", CLASS_CorrectionInfo); private static final Method METHOD_getSelectedText = CompatUtils .getMethod(InputConnection.class, "getSelectedText", int.class); private static final Method METHOD_setComposingRegion = CompatUtils .getMethod(InputConnection.class, "setComposingRegion", int.class, int.class); public static final boolean RECORRECTION_SUPPORTED; static { RECORRECTION_SUPPORTED = METHOD_getSelectedText != null && METHOD_setComposingRegion != null; } public static void commitCorrection(InputConnection ic, int offset, CharSequence oldText, CharSequence newText) { if (ic == null || CONSTRUCTOR_CorrectionInfo == null || METHOD_InputConnection_commitCorrection == null) { return; } Object[] args = { offset, oldText, newText }; Object correctionInfo = CompatUtils.newInstance(CONSTRUCTOR_CorrectionInfo, args); if (correctionInfo != null) { CompatUtils.invoke(ic, null, METHOD_InputConnection_commitCorrection, correctionInfo); } } /** * Returns the selected text between the selStart and selEnd positions. */ public static CharSequence getSelectedText(InputConnection ic, int selStart, int selEnd) { // Use reflection, for backward compatibility return (CharSequence) CompatUtils.invoke( ic, null, METHOD_getSelectedText, 0); } /** * Tries to set the text into composition mode if there is support for it in the framework. */ public static void underlineWord(InputConnection ic, SelectedWord word) { // Use reflection, for backward compatibility // If method not found, there's nothing we can do. It still works but just wont underline // the word. CompatUtils.invoke( ic, null, METHOD_setComposingRegion, word.mStart, word.mEnd); } } java/src/com/android/inputmethod/latin/EditingUtils.java +7 −10 Original line number Diff line number Diff line Loading @@ -16,8 +16,6 @@ package com.android.inputmethod.latin; import com.android.inputmethod.compat.InputConnectionCompatUtils; import android.text.TextUtils; import android.view.inputmethod.ExtractedText; import android.view.inputmethod.ExtractedTextRequest; Loading Loading @@ -246,7 +244,7 @@ public class EditingUtils { if (selStart == selEnd) { // There is just a cursor, so get the word at the cursor // getWordRangeAtCursor returns null if the connection is null EditingUtils.Range range = getWordRangeAtCursor(ic, wordSeparators); final EditingUtils.Range range = getWordRangeAtCursor(ic, wordSeparators); if (range != null && !TextUtils.isEmpty(range.mWord)) { return new SelectedWord(selStart - range.mCharsBefore, selEnd + range.mCharsAfter, range.mWord); Loading @@ -254,20 +252,19 @@ public class EditingUtils { } else { if (null == ic) return null; // Is the previous character empty or a word separator? If not, return null. CharSequence charsBefore = ic.getTextBeforeCursor(1, 0); final CharSequence charsBefore = ic.getTextBeforeCursor(1, 0); if (!isWordBoundary(charsBefore, wordSeparators)) { return null; } // Is the next character empty or a word separator? If not, return null. CharSequence charsAfter = ic.getTextAfterCursor(1, 0); final CharSequence charsAfter = ic.getTextAfterCursor(1, 0); if (!isWordBoundary(charsAfter, wordSeparators)) { return null; } // Extract the selection alone CharSequence touching = InputConnectionCompatUtils.getSelectedText( ic, selStart, selEnd); final CharSequence touching = ic.getSelectedText(0); if (TextUtils.isEmpty(touching)) return null; // Is any part of the selection a separator? If so, return null. final int length = touching.length(); Loading java/src/com/android/inputmethod/latin/LatinIME.java +3 −3 Original line number Diff line number Diff line Loading @@ -46,6 +46,7 @@ import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.view.ViewParent; import android.view.inputmethod.CompletionInfo; import android.view.inputmethod.CorrectionInfo; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.ExtractedText; import android.view.inputmethod.InputConnection; Loading @@ -54,7 +55,6 @@ import com.android.inputmethod.accessibility.AccessibilityUtils; import com.android.inputmethod.accessibility.AccessibleKeyboardViewProxy; import com.android.inputmethod.compat.CompatUtils; import com.android.inputmethod.compat.EditorInfoCompatUtils; import com.android.inputmethod.compat.InputConnectionCompatUtils; import com.android.inputmethod.compat.InputMethodManagerCompatWrapper; import com.android.inputmethod.compat.InputMethodServiceCompatWrapper; import com.android.inputmethod.compat.InputMethodSubtypeCompatWrapper; Loading Loading @@ -1787,8 +1787,8 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar if (!typedWord.equals(autoCorrection) && null != ic) { // This will make the correction flash for a short while as a visual clue // to the user that auto-correction happened. InputConnectionCompatUtils.commitCorrection(ic, mLastSelectionEnd - typedWord.length(), typedWord, autoCorrection); ic.commitCorrection(new CorrectionInfo(mLastSelectionEnd - typedWord.length(), typedWord, autoCorrection)); } } } Loading Loading
java/proguard.flags +5 −16 Original line number Diff line number Diff line Loading @@ -3,18 +3,15 @@ <init>(...); } -keep class com.android.inputmethod.latin.Flag { *; } -keep class com.android.inputmethod.latin.Suggest { <init>(...); com.android.inputmethod.latin.SuggestedWords getSuggestions(...); } -keep class com.android.inputmethod.latin.UserBigramDictionary { void setDatabaseMax(int); void setDatabaseDelete(int); void waitUntilUpdateDBDone(); void waitForDictionaryLoading(); } -keep class com.android.inputmethod.latin.AutoCorrection { java.lang.CharSequence getAutoCorrectionWord(); } Loading @@ -23,18 +20,10 @@ boolean equalsIgnoreCase(...); } -keep class com.android.inputmethod.latin.spellcheck.SpellChecker { *; } -keep class com.android.inputmethod.latin.spellcheck.SpellCheckerSettingsFragment { *; } -keep class com.android.inputmethod.latin.SettingsActivity { *; } -keep class com.android.inputmethod.keyboard.LatinKeyboardView { # Keep getter/setter methods for ObjectAnimator int getLanguageOnSpacebarAnimAlpha(); Loading
java/src/com/android/inputmethod/compat/InputConnectionCompatUtils.javadeleted 100644 → 0 +0 −80 Original line number Diff line number Diff line /* * Copyright (C) 2011 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.inputmethod.compat; import com.android.inputmethod.latin.EditingUtils.SelectedWord; import android.view.inputmethod.InputConnection; import java.lang.reflect.Constructor; import java.lang.reflect.Method; public class InputConnectionCompatUtils { private static final Class<?> CLASS_CorrectionInfo = CompatUtils .getClass("android.view.inputmethod.CorrectionInfo"); private static final Class<?>[] INPUT_TYPE_CorrectionInfo = new Class<?>[] { int.class, CharSequence.class, CharSequence.class }; private static final Constructor<?> CONSTRUCTOR_CorrectionInfo = CompatUtils .getConstructor(CLASS_CorrectionInfo, INPUT_TYPE_CorrectionInfo); private static final Method METHOD_InputConnection_commitCorrection = CompatUtils .getMethod(InputConnection.class, "commitCorrection", CLASS_CorrectionInfo); private static final Method METHOD_getSelectedText = CompatUtils .getMethod(InputConnection.class, "getSelectedText", int.class); private static final Method METHOD_setComposingRegion = CompatUtils .getMethod(InputConnection.class, "setComposingRegion", int.class, int.class); public static final boolean RECORRECTION_SUPPORTED; static { RECORRECTION_SUPPORTED = METHOD_getSelectedText != null && METHOD_setComposingRegion != null; } public static void commitCorrection(InputConnection ic, int offset, CharSequence oldText, CharSequence newText) { if (ic == null || CONSTRUCTOR_CorrectionInfo == null || METHOD_InputConnection_commitCorrection == null) { return; } Object[] args = { offset, oldText, newText }; Object correctionInfo = CompatUtils.newInstance(CONSTRUCTOR_CorrectionInfo, args); if (correctionInfo != null) { CompatUtils.invoke(ic, null, METHOD_InputConnection_commitCorrection, correctionInfo); } } /** * Returns the selected text between the selStart and selEnd positions. */ public static CharSequence getSelectedText(InputConnection ic, int selStart, int selEnd) { // Use reflection, for backward compatibility return (CharSequence) CompatUtils.invoke( ic, null, METHOD_getSelectedText, 0); } /** * Tries to set the text into composition mode if there is support for it in the framework. */ public static void underlineWord(InputConnection ic, SelectedWord word) { // Use reflection, for backward compatibility // If method not found, there's nothing we can do. It still works but just wont underline // the word. CompatUtils.invoke( ic, null, METHOD_setComposingRegion, word.mStart, word.mEnd); } }
java/src/com/android/inputmethod/latin/EditingUtils.java +7 −10 Original line number Diff line number Diff line Loading @@ -16,8 +16,6 @@ package com.android.inputmethod.latin; import com.android.inputmethod.compat.InputConnectionCompatUtils; import android.text.TextUtils; import android.view.inputmethod.ExtractedText; import android.view.inputmethod.ExtractedTextRequest; Loading Loading @@ -246,7 +244,7 @@ public class EditingUtils { if (selStart == selEnd) { // There is just a cursor, so get the word at the cursor // getWordRangeAtCursor returns null if the connection is null EditingUtils.Range range = getWordRangeAtCursor(ic, wordSeparators); final EditingUtils.Range range = getWordRangeAtCursor(ic, wordSeparators); if (range != null && !TextUtils.isEmpty(range.mWord)) { return new SelectedWord(selStart - range.mCharsBefore, selEnd + range.mCharsAfter, range.mWord); Loading @@ -254,20 +252,19 @@ public class EditingUtils { } else { if (null == ic) return null; // Is the previous character empty or a word separator? If not, return null. CharSequence charsBefore = ic.getTextBeforeCursor(1, 0); final CharSequence charsBefore = ic.getTextBeforeCursor(1, 0); if (!isWordBoundary(charsBefore, wordSeparators)) { return null; } // Is the next character empty or a word separator? If not, return null. CharSequence charsAfter = ic.getTextAfterCursor(1, 0); final CharSequence charsAfter = ic.getTextAfterCursor(1, 0); if (!isWordBoundary(charsAfter, wordSeparators)) { return null; } // Extract the selection alone CharSequence touching = InputConnectionCompatUtils.getSelectedText( ic, selStart, selEnd); final CharSequence touching = ic.getSelectedText(0); if (TextUtils.isEmpty(touching)) return null; // Is any part of the selection a separator? If so, return null. final int length = touching.length(); Loading
java/src/com/android/inputmethod/latin/LatinIME.java +3 −3 Original line number Diff line number Diff line Loading @@ -46,6 +46,7 @@ import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.view.ViewParent; import android.view.inputmethod.CompletionInfo; import android.view.inputmethod.CorrectionInfo; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.ExtractedText; import android.view.inputmethod.InputConnection; Loading @@ -54,7 +55,6 @@ import com.android.inputmethod.accessibility.AccessibilityUtils; import com.android.inputmethod.accessibility.AccessibleKeyboardViewProxy; import com.android.inputmethod.compat.CompatUtils; import com.android.inputmethod.compat.EditorInfoCompatUtils; import com.android.inputmethod.compat.InputConnectionCompatUtils; import com.android.inputmethod.compat.InputMethodManagerCompatWrapper; import com.android.inputmethod.compat.InputMethodServiceCompatWrapper; import com.android.inputmethod.compat.InputMethodSubtypeCompatWrapper; Loading Loading @@ -1787,8 +1787,8 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar if (!typedWord.equals(autoCorrection) && null != ic) { // This will make the correction flash for a short while as a visual clue // to the user that auto-correction happened. InputConnectionCompatUtils.commitCorrection(ic, mLastSelectionEnd - typedWord.length(), typedWord, autoCorrection); ic.commitCorrection(new CorrectionInfo(mLastSelectionEnd - typedWord.length(), typedWord, autoCorrection)); } } } Loading