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

Commit d2289bf0 authored by Vaibhav Devmurari's avatar Vaibhav Devmurari Committed by Android (Google) Code Review
Browse files

Merge "Create KCM copy when manipulating contents per language" into main

parents ba20c849 d80e3bfd
Loading
Loading
Loading
Loading
+9 −9
Original line number Diff line number Diff line
@@ -313,8 +313,8 @@ public class KeyCharacterMap implements Parcelable {
    private static native KeyCharacterMap nativeObtainEmptyKeyCharacterMap(int deviceId);
    private static native boolean nativeEquals(long ptr1, long ptr2);

    private static native void nativeApplyOverlay(long ptr, String layoutDescriptor,
            String overlay);
    private static native KeyCharacterMap nativeObtainMapWithOverlay(long ptrForBaseMap,
            String layoutDescriptor, String overlay);
    private static native int nativeGetMappedKey(long ptr, int scanCode);

    private KeyCharacterMap(Parcel in) {
@@ -387,13 +387,13 @@ public class KeyCharacterMap implements Parcelable {
     * @hide
     */
    public static KeyCharacterMap load(@NonNull String layoutDescriptor, @NonNull String overlay) {
        KeyCharacterMap kcm = KeyCharacterMap.load(VIRTUAL_KEYBOARD);
        kcm.applyOverlay(layoutDescriptor, overlay);
        return kcm;
        KeyCharacterMap virtualKcm = KeyCharacterMap.load(VIRTUAL_KEYBOARD);
        KeyCharacterMap kcmWithOverlay = nativeObtainMapWithOverlay(virtualKcm.mPtr,
                layoutDescriptor, overlay);
        if (kcmWithOverlay == null) {
            return virtualKcm;
        }

    private void applyOverlay(@NonNull String layoutDescriptor, @NonNull String overlay) {
        nativeApplyOverlay(mPtr, layoutDescriptor, overlay);
        return kcmWithOverlay;
    }

    /**
+13 −9
Original line number Diff line number Diff line
@@ -242,21 +242,24 @@ static jboolean nativeEquals(JNIEnv* env, jobject clazz, jlong ptr1, jlong ptr2)
    return static_cast<jboolean>(*map1 == *map2);
}

static void nativeApplyOverlay(JNIEnv* env, jobject clazz, jlong ptr, jstring nameObj,
        jstring overlayObj) {
    NativeKeyCharacterMap* map = reinterpret_cast<NativeKeyCharacterMap*>(ptr);
static jobject nativeObtainMapWithOverlay(JNIEnv* env, jobject clazz, jlong baseMapPtr,
                                          jstring nameObj, jstring overlayObj) {
    NativeKeyCharacterMap* map = reinterpret_cast<NativeKeyCharacterMap*>(baseMapPtr);
    if (!map || !map->getMap()) {
        return;
        return nullptr;
    }
    ScopedUtfChars nameChars(env, nameObj);
    ScopedUtfChars overlayChars(env, overlayObj);
    base::Result<std::shared_ptr<KeyCharacterMap>> ret =
            KeyCharacterMap::loadContents(nameChars.c_str(), overlayChars.c_str(),
                                          KeyCharacterMap::Format::OVERLAY);
    if (ret.ok()) {
        std::shared_ptr<KeyCharacterMap> overlay = *ret;
        map->getMap()->combine(*overlay);
    if (!ret.ok()) {
        return nullptr;
    }
    std::shared_ptr<KeyCharacterMap> overlay = *ret;
    std::unique_ptr<KeyCharacterMap> result = std::make_unique<KeyCharacterMap>(*map->getMap());
    result->combine(*overlay);
    return android_view_KeyCharacterMap_create(env, map->getDeviceId(), std::move(result));
}

static jint nativeGetMappedKey(JNIEnv* env, jobject clazz, jlong ptr, jint scanCode) {
@@ -292,8 +295,9 @@ static const JNINativeMethod g_methods[] = {
        {"nativeObtainEmptyKeyCharacterMap", "(I)Landroid/view/KeyCharacterMap;",
         (void*)nativeObtainEmptyKeyCharacterMap},
        {"nativeEquals", "(JJ)Z", (void*)nativeEquals},
        {"nativeApplyOverlay", "(JLjava/lang/String;Ljava/lang/String;)V",
         (void*)nativeApplyOverlay},
        {"nativeObtainMapWithOverlay",
         "(JLjava/lang/String;Ljava/lang/String;)Landroid/view/KeyCharacterMap;",
         (void*)nativeObtainMapWithOverlay},
        {"nativeGetMappedKey", "(JI)I", (void*)nativeGetMappedKey}};

int register_android_view_KeyCharacterMap(JNIEnv* env)