Loading core/java/android/view/KeyCharacterMap.java +9 −9 Original line number Diff line number Diff line Loading @@ -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) { Loading Loading @@ -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; } /** Loading core/jni/android_view_KeyCharacterMap.cpp +13 −9 Original line number Diff line number Diff line Loading @@ -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) { Loading Loading @@ -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) Loading Loading
core/java/android/view/KeyCharacterMap.java +9 −9 Original line number Diff line number Diff line Loading @@ -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) { Loading Loading @@ -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; } /** Loading
core/jni/android_view_KeyCharacterMap.cpp +13 −9 Original line number Diff line number Diff line Loading @@ -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) { Loading Loading @@ -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) Loading