Remove InputConnectionCompatUtils

Also, small cleanup in proguard.flags

bug: 6129704
Change-Id: If4cc694dbe74b26b1d0da301bbc321ee7afc0211
main
Ken Wakasa 2012-03-31 18:32:48 +09:00
parent 697033f93f
commit 96fdc4dd84
4 changed files with 15 additions and 109 deletions

View File

@ -3,18 +3,15 @@
<init>(...); <init>(...);
} }
-keep class com.android.inputmethod.latin.Flag {
*;
}
-keep class com.android.inputmethod.latin.Suggest { -keep class com.android.inputmethod.latin.Suggest {
<init>(...); <init>(...);
com.android.inputmethod.latin.SuggestedWords getSuggestions(...); 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 { -keep class com.android.inputmethod.latin.AutoCorrection {
java.lang.CharSequence getAutoCorrectionWord(); java.lang.CharSequence getAutoCorrectionWord();
} }
@ -23,18 +20,10 @@
boolean equalsIgnoreCase(...); boolean equalsIgnoreCase(...);
} }
-keep class com.android.inputmethod.latin.spellcheck.SpellChecker {
*;
}
-keep class com.android.inputmethod.latin.spellcheck.SpellCheckerSettingsFragment { -keep class com.android.inputmethod.latin.spellcheck.SpellCheckerSettingsFragment {
*; *;
} }
-keep class com.android.inputmethod.latin.SettingsActivity {
*;
}
-keep class com.android.inputmethod.keyboard.LatinKeyboardView { -keep class com.android.inputmethod.keyboard.LatinKeyboardView {
# Keep getter/setter methods for ObjectAnimator # Keep getter/setter methods for ObjectAnimator
int getLanguageOnSpacebarAnimAlpha(); int getLanguageOnSpacebarAnimAlpha();

View File

@ -1,80 +0,0 @@
/*
* 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);
}
}

View File

@ -16,8 +16,6 @@
package com.android.inputmethod.latin; package com.android.inputmethod.latin;
import com.android.inputmethod.compat.InputConnectionCompatUtils;
import android.text.TextUtils; import android.text.TextUtils;
import android.view.inputmethod.ExtractedText; import android.view.inputmethod.ExtractedText;
import android.view.inputmethod.ExtractedTextRequest; import android.view.inputmethod.ExtractedTextRequest;
@ -246,7 +244,7 @@ public class EditingUtils {
if (selStart == selEnd) { if (selStart == selEnd) {
// There is just a cursor, so get the word at the cursor // There is just a cursor, so get the word at the cursor
// getWordRangeAtCursor returns null if the connection is null // 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)) { if (range != null && !TextUtils.isEmpty(range.mWord)) {
return new SelectedWord(selStart - range.mCharsBefore, selEnd + range.mCharsAfter, return new SelectedWord(selStart - range.mCharsBefore, selEnd + range.mCharsAfter,
range.mWord); range.mWord);
@ -254,20 +252,19 @@ public class EditingUtils {
} else { } else {
if (null == ic) return null; if (null == ic) return null;
// Is the previous character empty or a word separator? If not, 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)) { if (!isWordBoundary(charsBefore, wordSeparators)) {
return null; return null;
} }
// Is the next character empty or a word separator? If not, 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)) { if (!isWordBoundary(charsAfter, wordSeparators)) {
return null; return null;
} }
// Extract the selection alone // Extract the selection alone
CharSequence touching = InputConnectionCompatUtils.getSelectedText( final CharSequence touching = ic.getSelectedText(0);
ic, selStart, selEnd);
if (TextUtils.isEmpty(touching)) return null; if (TextUtils.isEmpty(touching)) return null;
// Is any part of the selection a separator? If so, return null. // Is any part of the selection a separator? If so, return null.
final int length = touching.length(); final int length = touching.length();

View File

@ -46,6 +46,7 @@ import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams; import android.view.ViewGroup.LayoutParams;
import android.view.ViewParent; import android.view.ViewParent;
import android.view.inputmethod.CompletionInfo; import android.view.inputmethod.CompletionInfo;
import android.view.inputmethod.CorrectionInfo;
import android.view.inputmethod.EditorInfo; import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.ExtractedText; import android.view.inputmethod.ExtractedText;
import android.view.inputmethod.InputConnection; import android.view.inputmethod.InputConnection;
@ -54,7 +55,6 @@ import com.android.inputmethod.accessibility.AccessibilityUtils;
import com.android.inputmethod.accessibility.AccessibleKeyboardViewProxy; import com.android.inputmethod.accessibility.AccessibleKeyboardViewProxy;
import com.android.inputmethod.compat.CompatUtils; import com.android.inputmethod.compat.CompatUtils;
import com.android.inputmethod.compat.EditorInfoCompatUtils; import com.android.inputmethod.compat.EditorInfoCompatUtils;
import com.android.inputmethod.compat.InputConnectionCompatUtils;
import com.android.inputmethod.compat.InputMethodManagerCompatWrapper; import com.android.inputmethod.compat.InputMethodManagerCompatWrapper;
import com.android.inputmethod.compat.InputMethodServiceCompatWrapper; import com.android.inputmethod.compat.InputMethodServiceCompatWrapper;
import com.android.inputmethod.compat.InputMethodSubtypeCompatWrapper; import com.android.inputmethod.compat.InputMethodSubtypeCompatWrapper;
@ -1787,8 +1787,8 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
if (!typedWord.equals(autoCorrection) && null != ic) { if (!typedWord.equals(autoCorrection) && null != ic) {
// This will make the correction flash for a short while as a visual clue // This will make the correction flash for a short while as a visual clue
// to the user that auto-correction happened. // to the user that auto-correction happened.
InputConnectionCompatUtils.commitCorrection(ic, ic.commitCorrection(new CorrectionInfo(mLastSelectionEnd - typedWord.length(),
mLastSelectionEnd - typedWord.length(), typedWord, autoCorrection); typedWord, autoCorrection));
} }
} }
} }