Remove InputConnectionCompatUtils

Also, small cleanup in proguard.flags

bug: 6129704
Change-Id: If4cc694dbe74b26b1d0da301bbc321ee7afc0211
diff --git a/java/proguard.flags b/java/proguard.flags
index e33706c..a0010f9 100644
--- a/java/proguard.flags
+++ b/java/proguard.flags
@@ -1,6 +1,10 @@
 -keep class com.android.inputmethod.latin.BinaryDictionary {
   int mDictLength;
-  <init>(...); 
+  <init>(...);
+}
+
+-keep class com.android.inputmethod.latin.Flag {
+  *;
 }
 
 -keep class com.android.inputmethod.latin.Suggest {
@@ -8,13 +12,6 @@
   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();
 }
@@ -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();
diff --git a/java/src/com/android/inputmethod/compat/InputConnectionCompatUtils.java b/java/src/com/android/inputmethod/compat/InputConnectionCompatUtils.java
deleted file mode 100644
index 7d00b60..0000000
--- a/java/src/com/android/inputmethod/compat/InputConnectionCompatUtils.java
+++ /dev/null
@@ -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);
-    }
-}
diff --git a/java/src/com/android/inputmethod/latin/EditingUtils.java b/java/src/com/android/inputmethod/latin/EditingUtils.java
index 1e8ad18..b3f613b 100644
--- a/java/src/com/android/inputmethod/latin/EditingUtils.java
+++ b/java/src/com/android/inputmethod/latin/EditingUtils.java
@@ -1,12 +1,12 @@
 /*
  * Copyright (C) 2009 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
@@ -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;
@@ -246,7 +244,7 @@
         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);
@@ -254,20 +252,19 @@
         } 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();
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index f5909a6..363494b 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -46,6 +46,7 @@
 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;
@@ -54,7 +55,6 @@
 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;
@@ -1787,8 +1787,8 @@
             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));
             }
         }
     }