aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
authorYohei Yukawa <yukawa@google.com>2014-07-21 18:28:37 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-07-21 18:28:37 +0000
commite2ceff04582791af2d25facfa5124b44ea95de3b (patch)
treea66ed2db2714eecd44cf3f9bad2d0f59b2e9e763 /java/src
parent4deb5dc9a209b2e2ce9847a144f3f84008ea3d53 (diff)
parent3f513f107ef0754da2b1c704167325151ce9b7ea (diff)
downloadlatinime-e2ceff04582791af2d25facfa5124b44ea95de3b.tar.gz
latinime-e2ceff04582791af2d25facfa5124b44ea95de3b.tar.xz
latinime-e2ceff04582791af2d25facfa5124b44ea95de3b.zip
am 3f513f10: Enable InputMethodService#onUpdateCursor behind the flag
* commit '3f513f107ef0754da2b1c704167325151ce9b7ea': Enable InputMethodService#onUpdateCursor behind the flag
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/inputmethod/compat/InputMethodServiceCompatUtils.java27
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java14
-rw-r--r--java/src/com/android/inputmethod/latin/define/ProductionFlags.java29
3 files changed, 31 insertions, 39 deletions
diff --git a/java/src/com/android/inputmethod/compat/InputMethodServiceCompatUtils.java b/java/src/com/android/inputmethod/compat/InputMethodServiceCompatUtils.java
index cbae6952c..48047ddbf 100644
--- a/java/src/com/android/inputmethod/compat/InputMethodServiceCompatUtils.java
+++ b/java/src/com/android/inputmethod/compat/InputMethodServiceCompatUtils.java
@@ -17,7 +17,6 @@
package com.android.inputmethod.compat;
import android.inputmethodservice.InputMethodService;
-import com.android.inputmethod.latin.define.ProductionFlags;
import java.lang.reflect.Method;
@@ -35,30 +34,4 @@ public final class InputMethodServiceCompatUtils {
return (Boolean)CompatUtils.invoke(ims, false /* defaultValue */,
METHOD_enableHardwareAcceleration);
}
-
- public static void setCursorAnchorMonitorMode(final InputMethodService ims, final int mode) {
- if (ProductionFlags.USES_CURSOR_ANCHOR_MONITOR) {
- ExperimentalAPIUtils.setCursorAnchorMonitorMode(ims, mode);
- }
- }
-
- /*
- * For unreleased APIs. ProGuard will strip this class entirely, unless used explicitly.
- */
- private static final class ExperimentalAPIUtils {
- // Note that {@link InputMethodManager#setCursorAnchorMonitorMode} is not yet available as
- // an official API as of API level 19 (Build.VERSION_CODES.KITKAT).
- private static final Method METHOD_setCursorAnchorMonitorMode = CompatUtils.getMethod(
- InputMethodService.class, "setCursorAnchorMonitorMode", int.class);
-
- private ExperimentalAPIUtils() {
- // This utility class is not publicly instantiable.
- }
-
- public static void setCursorAnchorMonitorMode(final InputMethodService ims,
- final int mode) {
- CompatUtils.invoke(ims, null /* defaultValue */,
- METHOD_setCursorAnchorMonitorMode, mode);
- }
- }
}
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index dd0060f4a..b641f3a8b 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -55,6 +55,7 @@ import android.view.inputmethod.InputMethodSubtype;
import com.android.inputmethod.accessibility.AccessibilityUtils;
import com.android.inputmethod.annotations.UsedForTesting;
+import com.android.inputmethod.compat.InputConnectionCompatUtils;
import com.android.inputmethod.compat.InputMethodServiceCompatUtils;
import com.android.inputmethod.dictionarypack.DictionaryPackConstants;
import com.android.inputmethod.event.Event;
@@ -413,11 +414,14 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
if (latinIme != null) {
executePendingImsCallback(latinIme, editorInfo, restarting);
latinIme.onStartInputInternal(editorInfo, restarting);
- if (ProductionFlags.USES_CURSOR_ANCHOR_MONITOR) {
- // Currently we need to call this every time when the IME is attached to
- // new application.
- // TODO: Consider if we can do this automatically in the framework.
- InputMethodServiceCompatUtils.setCursorAnchorMonitorMode(latinIme, 1);
+ if (ProductionFlags.ENABLE_CURSOR_RECT_CALLBACK) {
+ InputConnectionCompatUtils.requestCursorRect(
+ latinIme.getCurrentInputConnection(), true /* enableMonitor */);
+ }
+ if (ProductionFlags.ENABLE_CURSOR_ANCHOR_INFO_CALLBACK) {
+ InputConnectionCompatUtils.requestCursorAnchorInfo(
+ latinIme.getCurrentInputConnection(), true /* enableMonitor */,
+ true /* requestImmediateCallback */);
}
}
}
diff --git a/java/src/com/android/inputmethod/latin/define/ProductionFlags.java b/java/src/com/android/inputmethod/latin/define/ProductionFlags.java
index 6dccd789d..d385cf840 100644
--- a/java/src/com/android/inputmethod/latin/define/ProductionFlags.java
+++ b/java/src/com/android/inputmethod/latin/define/ProductionFlags.java
@@ -23,15 +23,30 @@ public final class ProductionFlags {
public static final boolean IS_HARDWARE_KEYBOARD_SUPPORTED = false;
- // When true, enable {@link InputMethodService#onUpdateCursor} callback with
- // {@link InputMethodService#setCursorAnchorMonitorMode}, which is not yet available in
- // API level 19. Do not turn this on in production until the new API becomes publicly
- // available.
- public static final boolean USES_CURSOR_ANCHOR_MONITOR = false;
+ /**
+ * When true, enable {@link InputMethodService#onUpdateCursorAnchorInfo} callback via
+ * {@link InputConnection#requestCursorAnchorInfo}. This flag has no effect in API Level 20
+ * and prior. In general, this callback provides more detailed positional information,
+ * even though an explicit support is required by the editor.
+ */
+ public static final boolean ENABLE_CURSOR_ANCHOR_INFO_CALLBACK = false;
- // Include all suggestions from all dictionaries in {@link SuggestedWords#mRawSuggestions}.
+ /**
+ * When true, enable {@link InputMethodService#onUpdateCursor} callback via
+ * {@link InputConnection#requestCursorAnchorInfo}. Although this callback has been available
+ * since API Level 3, the callback has never been used until API Level 20. Thus it may or may
+ * not work well as expected. Should rely on {@link InputMethodService#onUpdateCursorAnchorInfo}
+ * whenever possible since it is supposed to be more reliable and accurate.
+ */
+ public static final boolean ENABLE_CURSOR_RECT_CALLBACK = false;
+
+ /**
+ * Include all suggestions from all dictionaries in {@link SuggestedWords#mRawSuggestions}.
+ */
public static final boolean INCLUDE_RAW_SUGGESTIONS = false;
- // When false, the metrics logging is not yet ready to be enabled.
+ /**
+ * When false, the metrics logging is not yet ready to be enabled.
+ */
public static final boolean IS_METRICS_LOGGING_SUPPORTED = false;
}