Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9115dd27 authored by satok's avatar satok
Browse files

Fix some compat bugs and add VoiceInputLoggerCompatUtils

Change-Id: I54ed0853ed4423704a300977d7880678e066a6fb
parent f1a81f5e
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -32,4 +32,8 @@ public abstract class AbstractCompatWrapper {
    public Object getOriginalObject() {
        return mObj;
    }

    public boolean hasOriginalObject() {
        return mObj != null;
    }
}
+1 −0
Original line number Diff line number Diff line
@@ -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) {
+6 −3
Original line number Diff line number Diff line
@@ -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;
@@ -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();
@@ -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;
@@ -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() {
+12 −4
Original line number Diff line number Diff line
@@ -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;
@@ -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");
@@ -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");
        }
@@ -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() {
@@ -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) {
+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