Loading java/src/com/android/inputmethod/compat/AbstractCompatWrapper.java +4 −0 Original line number Diff line number Diff line Loading @@ -32,4 +32,8 @@ public abstract class AbstractCompatWrapper { public Object getOriginalObject() { return mObj; } public boolean hasOriginalObject() { return mObj != null; } } java/src/com/android/inputmethod/compat/CompatUtils.java +1 −0 Original line number Diff line number Diff line Loading @@ -68,6 +68,7 @@ public class CompatUtils { public static Method getMethod(Class<?> targetClass, String name, Class<?>... parameterTypes) { if (targetClass == null || TextUtils.isEmpty(name)) return null; try { return targetClass.getMethod(name, parameterTypes); } catch (SecurityException e) { Loading java/src/com/android/inputmethod/compat/InputMethodManagerCompatWrapper.java +6 −3 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.view.inputmethod.InputMethodManager; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; Loading @@ -43,6 +44,8 @@ public class InputMethodManagerCompatWrapper { CompatUtils.getMethod( InputMethodManager.class, "setInputMethodAndSubtype", IBinder.class, String.class, InputMethodSubtypeCompatWrapper.CLASS_InputMethodSubtype); private static final Method METHOD_switchToLastInputMethod = CompatUtils.getMethod( InputMethodManager.class, "switchToLastInputMethod", IBinder.class); private static final InputMethodManagerCompatWrapper sInstance = new InputMethodManagerCompatWrapper(); Loading Loading @@ -78,7 +81,8 @@ public class InputMethodManagerCompatWrapper { public Map<InputMethodInfoCompatWrapper, List<InputMethodSubtypeCompatWrapper>> getShortcutInputMethodsAndSubtypes() { Object retval = CompatUtils.invoke(mImm, null, METHOD_getShortcutInputMethodsAndSubtypes); if (!(retval instanceof Map)) return null; // Returns an empty map if (!(retval instanceof Map)) return Collections.emptyMap(); Map<InputMethodInfoCompatWrapper, List<InputMethodSubtypeCompatWrapper>> shortcutMap = new HashMap<InputMethodInfoCompatWrapper, List<InputMethodSubtypeCompatWrapper>>(); final Map<?, ?> retvalMap = (Map<?, ?>)retval; Loading @@ -100,8 +104,7 @@ public class InputMethodManagerCompatWrapper { } public boolean switchToLastInputMethod(IBinder token) { if (mImm == null) return false; return mImm.switchToLastInputMethod(token); return (Boolean)CompatUtils.invoke(mImm, false, METHOD_switchToLastInputMethod, token); } public List<InputMethodInfoCompatWrapper> getEnabledInputMethodList() { Loading java/src/com/android/inputmethod/compat/InputMethodSubtypeCompatWrapper.java +12 −4 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.inputmethod.compat; import com.android.inputmethod.latin.LatinImeLogger; import android.text.TextUtils; import android.util.Log; import java.lang.reflect.Method; Loading @@ -27,6 +28,8 @@ import java.lang.reflect.Method; public final class InputMethodSubtypeCompatWrapper extends AbstractCompatWrapper { private static final boolean DBG = LatinImeLogger.sDBG; private static final String TAG = InputMethodSubtypeCompatWrapper.class.getSimpleName(); private static final String DEFAULT_LOCALE = "en_US"; private static final String DEFAULT_MODE = "keyboard"; public static final Class<?> CLASS_InputMethodSubtype = CompatUtils.getClass("android.view.inputmethod.InputMethodSubtype"); Loading @@ -46,7 +49,8 @@ public final class InputMethodSubtypeCompatWrapper extends AbstractCompatWrapper CompatUtils.getMethod(CLASS_InputMethodSubtype, "getExtraValueOf", String.class); public InputMethodSubtypeCompatWrapper(Object subtype) { super(CLASS_InputMethodSubtype.isInstance(subtype) ? subtype : null); super((CLASS_InputMethodSubtype != null && CLASS_InputMethodSubtype.isInstance(subtype)) ? subtype : null); if (DBG) { Log.d(TAG, "CreateInputMethodSubtypeCompatWrapper"); } Loading @@ -61,11 +65,15 @@ public final class InputMethodSubtypeCompatWrapper extends AbstractCompatWrapper } public String getLocale() { return (String)CompatUtils.invoke(mObj, null, METHOD_getLocale); final String s = (String)CompatUtils.invoke(mObj, null, METHOD_getLocale); if (TextUtils.isEmpty(s)) return DEFAULT_LOCALE; return s; } public String getMode() { return (String)CompatUtils.invoke(mObj, null, METHOD_getMode); String s = (String)CompatUtils.invoke(mObj, null, METHOD_getMode); if (TextUtils.isEmpty(s)) return DEFAULT_MODE; return s; } public String getExtraValue() { Loading @@ -73,7 +81,7 @@ public final class InputMethodSubtypeCompatWrapper extends AbstractCompatWrapper } public boolean containsExtraValueKey(String key) { return (Boolean)CompatUtils.invoke(mObj, null, METHOD_containsExtraValueKey, key); return (Boolean)CompatUtils.invoke(mObj, false, METHOD_containsExtraValueKey, key); } public String getExtraValueOf(String key) { Loading java/src/com/android/inputmethod/deprecated/compat/VoiceInputLoggerCompatUtils.java 0 → 100644 +36 −0 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.deprecated.compat; import com.android.common.userhappiness.UserHappinessSignals; import com.android.inputmethod.compat.CompatUtils; import java.lang.reflect.Method; public class VoiceInputLoggerCompatUtils { public static final String EXTRA_TEXT_REPLACED_LENGTH = "length"; public static final String EXTRA_BEFORE_N_BEST_CHOOSE = "before"; public static final String EXTRA_AFTER_N_BEST_CHOOSE = "after"; private static final Method METHOD_UserHappinessSignals_setHasVoiceLoggingInfo = CompatUtils.getMethod(UserHappinessSignals.class, "setHasVoiceLoggingInfo", boolean.class); public static void setHasVoiceLoggingInfoCompat(boolean hasLoggingInfo) { CompatUtils.invoke(null, null, METHOD_UserHappinessSignals_setHasVoiceLoggingInfo, hasLoggingInfo); } } Loading
java/src/com/android/inputmethod/compat/AbstractCompatWrapper.java +4 −0 Original line number Diff line number Diff line Loading @@ -32,4 +32,8 @@ public abstract class AbstractCompatWrapper { public Object getOriginalObject() { return mObj; } public boolean hasOriginalObject() { return mObj != null; } }
java/src/com/android/inputmethod/compat/CompatUtils.java +1 −0 Original line number Diff line number Diff line Loading @@ -68,6 +68,7 @@ public class CompatUtils { public static Method getMethod(Class<?> targetClass, String name, Class<?>... parameterTypes) { if (targetClass == null || TextUtils.isEmpty(name)) return null; try { return targetClass.getMethod(name, parameterTypes); } catch (SecurityException e) { Loading
java/src/com/android/inputmethod/compat/InputMethodManagerCompatWrapper.java +6 −3 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.view.inputmethod.InputMethodManager; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; Loading @@ -43,6 +44,8 @@ public class InputMethodManagerCompatWrapper { CompatUtils.getMethod( InputMethodManager.class, "setInputMethodAndSubtype", IBinder.class, String.class, InputMethodSubtypeCompatWrapper.CLASS_InputMethodSubtype); private static final Method METHOD_switchToLastInputMethod = CompatUtils.getMethod( InputMethodManager.class, "switchToLastInputMethod", IBinder.class); private static final InputMethodManagerCompatWrapper sInstance = new InputMethodManagerCompatWrapper(); Loading Loading @@ -78,7 +81,8 @@ public class InputMethodManagerCompatWrapper { public Map<InputMethodInfoCompatWrapper, List<InputMethodSubtypeCompatWrapper>> getShortcutInputMethodsAndSubtypes() { Object retval = CompatUtils.invoke(mImm, null, METHOD_getShortcutInputMethodsAndSubtypes); if (!(retval instanceof Map)) return null; // Returns an empty map if (!(retval instanceof Map)) return Collections.emptyMap(); Map<InputMethodInfoCompatWrapper, List<InputMethodSubtypeCompatWrapper>> shortcutMap = new HashMap<InputMethodInfoCompatWrapper, List<InputMethodSubtypeCompatWrapper>>(); final Map<?, ?> retvalMap = (Map<?, ?>)retval; Loading @@ -100,8 +104,7 @@ public class InputMethodManagerCompatWrapper { } public boolean switchToLastInputMethod(IBinder token) { if (mImm == null) return false; return mImm.switchToLastInputMethod(token); return (Boolean)CompatUtils.invoke(mImm, false, METHOD_switchToLastInputMethod, token); } public List<InputMethodInfoCompatWrapper> getEnabledInputMethodList() { Loading
java/src/com/android/inputmethod/compat/InputMethodSubtypeCompatWrapper.java +12 −4 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.inputmethod.compat; import com.android.inputmethod.latin.LatinImeLogger; import android.text.TextUtils; import android.util.Log; import java.lang.reflect.Method; Loading @@ -27,6 +28,8 @@ import java.lang.reflect.Method; public final class InputMethodSubtypeCompatWrapper extends AbstractCompatWrapper { private static final boolean DBG = LatinImeLogger.sDBG; private static final String TAG = InputMethodSubtypeCompatWrapper.class.getSimpleName(); private static final String DEFAULT_LOCALE = "en_US"; private static final String DEFAULT_MODE = "keyboard"; public static final Class<?> CLASS_InputMethodSubtype = CompatUtils.getClass("android.view.inputmethod.InputMethodSubtype"); Loading @@ -46,7 +49,8 @@ public final class InputMethodSubtypeCompatWrapper extends AbstractCompatWrapper CompatUtils.getMethod(CLASS_InputMethodSubtype, "getExtraValueOf", String.class); public InputMethodSubtypeCompatWrapper(Object subtype) { super(CLASS_InputMethodSubtype.isInstance(subtype) ? subtype : null); super((CLASS_InputMethodSubtype != null && CLASS_InputMethodSubtype.isInstance(subtype)) ? subtype : null); if (DBG) { Log.d(TAG, "CreateInputMethodSubtypeCompatWrapper"); } Loading @@ -61,11 +65,15 @@ public final class InputMethodSubtypeCompatWrapper extends AbstractCompatWrapper } public String getLocale() { return (String)CompatUtils.invoke(mObj, null, METHOD_getLocale); final String s = (String)CompatUtils.invoke(mObj, null, METHOD_getLocale); if (TextUtils.isEmpty(s)) return DEFAULT_LOCALE; return s; } public String getMode() { return (String)CompatUtils.invoke(mObj, null, METHOD_getMode); String s = (String)CompatUtils.invoke(mObj, null, METHOD_getMode); if (TextUtils.isEmpty(s)) return DEFAULT_MODE; return s; } public String getExtraValue() { Loading @@ -73,7 +81,7 @@ public final class InputMethodSubtypeCompatWrapper extends AbstractCompatWrapper } public boolean containsExtraValueKey(String key) { return (Boolean)CompatUtils.invoke(mObj, null, METHOD_containsExtraValueKey, key); return (Boolean)CompatUtils.invoke(mObj, false, METHOD_containsExtraValueKey, key); } public String getExtraValueOf(String key) { Loading
java/src/com/android/inputmethod/deprecated/compat/VoiceInputLoggerCompatUtils.java 0 → 100644 +36 −0 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.deprecated.compat; import com.android.common.userhappiness.UserHappinessSignals; import com.android.inputmethod.compat.CompatUtils; import java.lang.reflect.Method; public class VoiceInputLoggerCompatUtils { public static final String EXTRA_TEXT_REPLACED_LENGTH = "length"; public static final String EXTRA_BEFORE_N_BEST_CHOOSE = "before"; public static final String EXTRA_AFTER_N_BEST_CHOOSE = "after"; private static final Method METHOD_UserHappinessSignals_setHasVoiceLoggingInfo = CompatUtils.getMethod(UserHappinessSignals.class, "setHasVoiceLoggingInfo", boolean.class); public static void setHasVoiceLoggingInfoCompat(boolean hasLoggingInfo) { CompatUtils.invoke(null, null, METHOD_UserHappinessSignals_setHasVoiceLoggingInfo, hasLoggingInfo); } }