diff options
author | 2024-04-16 12:29:48 +0100 | |
---|---|---|
committer | 2024-04-16 12:46:59 +0100 | |
commit | ee91cd994b5b4241a519cd9de37c0939319b108d (patch) | |
tree | 9ff24a2dd891e4d80854aa2427a23331ff21ba1e | |
parent | 97a771174b4efb45086ac0bfc834c4f91017f6cf (diff) |
Add input-related file to all host builds of runtime
This makes various input-related files part of all builds of
libandroid_runtime, including host builds. In particular, this makes
android_view_MotionEvent jni bindings work for host builds.
This also rename LayoutlibLoader to HostRuntime as it may end up being
used by more than Layoutlib.
Bug: 322360037
Test: build libandroid_runtime on host
Change-Id: I5e5f57a2bf102c7ac5d96e16bd22f4f71e35e1ba
-rw-r--r-- | core/jni/Android.bp | 25 | ||||
-rw-r--r-- | core/jni/android_view_MotionEvent.cpp | 102 | ||||
-rw-r--r-- | core/jni/platform/OWNERS | 4 | ||||
-rw-r--r-- | core/jni/platform/host/HostRuntime.cpp (renamed from core/jni/LayoutlibLoader.cpp) | 36 |
4 files changed, 96 insertions, 71 deletions
diff --git a/core/jni/Android.bp b/core/jni/Android.bp index 03b57d07c0a7..4b064ddde5ff 100644 --- a/core/jni/Android.bp +++ b/core/jni/Android.bp @@ -78,6 +78,13 @@ cc_library_shared_for_libandroid_runtime { "android_util_StringBlock.cpp", "android_util_XmlBlock.cpp", "android_util_jar_StrictJarFile.cpp", + "android_view_InputDevice.cpp", + "android_view_KeyCharacterMap.cpp", + "android_view_KeyEvent.cpp", + "android_view_MotionEvent.cpp", + "android_view_VelocityTracker.cpp", + "android_view_VerifiedKeyEvent.cpp", + "android_view_VerifiedMotionEvent.cpp", "com_android_internal_util_VirtualRefBasePtr.cpp", "core_jni_helpers.cpp", ":deviceproductinfoconstants_aidl", @@ -153,13 +160,9 @@ cc_library_shared_for_libandroid_runtime { "android_view_CompositionSamplingListener.cpp", "android_view_DisplayEventReceiver.cpp", "android_view_InputChannel.cpp", - "android_view_InputDevice.cpp", "android_view_InputEventReceiver.cpp", "android_view_InputEventSender.cpp", "android_view_InputQueue.cpp", - "android_view_KeyCharacterMap.cpp", - "android_view_KeyEvent.cpp", - "android_view_MotionEvent.cpp", "android_view_MotionPredictor.cpp", "android_view_PointerIcon.cpp", "android_view_Surface.cpp", @@ -170,9 +173,6 @@ cc_library_shared_for_libandroid_runtime { "android_view_SurfaceSession.cpp", "android_view_TextureView.cpp", "android_view_TunnelModeEnabledListener.cpp", - "android_view_VelocityTracker.cpp", - "android_view_VerifiedKeyEvent.cpp", - "android_view_VerifiedMotionEvent.cpp", "android_text_Hyphenator.cpp", "android_os_Debug.cpp", "android_os_GraphicsEnvironment.cpp", @@ -389,7 +389,7 @@ cc_library_shared_for_libandroid_runtime { "-Wno-unused-function", ], srcs: [ - "LayoutlibLoader.cpp", + "platform/host/HostRuntime.cpp", ], include_dirs: [ "external/vulkan-headers/include", @@ -409,6 +409,7 @@ cc_library_shared_for_libandroid_runtime { "libhostgraphics", "libhwui", "libimage_type_recognition", + "libinput", "libjpeg", "libpiex", "libpng", @@ -436,16 +437,9 @@ cc_library_shared_for_libandroid_runtime { "android_os_MessageQueue.cpp", "android_os_Parcel.cpp", - "android_view_KeyCharacterMap.cpp", - "android_view_KeyEvent.cpp", "android_view_InputChannel.cpp", - "android_view_InputDevice.cpp", "android_view_InputEventReceiver.cpp", "android_view_InputEventSender.cpp", - "android_view_MotionEvent.cpp", - "android_view_VelocityTracker.cpp", - "android_view_VerifiedKeyEvent.cpp", - "android_view_VerifiedMotionEvent.cpp", "android_util_AssetManager.cpp", "android_util_Binder.cpp", @@ -453,7 +447,6 @@ cc_library_shared_for_libandroid_runtime { "android_util_FileObserver.cpp", ], static_libs: [ - "libinput", "libbinderthreadstateutils", "libsqlite", "libgui_window_info_static", diff --git a/core/jni/android_view_MotionEvent.cpp b/core/jni/android_view_MotionEvent.cpp index b801a69638e8..3e3af40a6530 100644 --- a/core/jni/android_view_MotionEvent.cpp +++ b/core/jni/android_view_MotionEvent.cpp @@ -28,6 +28,8 @@ #include <nativehelper/JNIHelp.h> #include <nativehelper/ScopedUtfChars.h> +#include <sstream> + #include "android_os_Parcel.h" #include "android_util_Binder.h" #include "core_jni_helpers.h" @@ -598,8 +600,8 @@ static void android_view_MotionEvent_nativeApplyTransform(JNIEnv* env, jclass cl // ----------------- @CriticalNative ------------------------------ -static jlong android_view_MotionEvent_nativeCopy(jlong destNativePtr, jlong sourceNativePtr, - jboolean keepHistory) { +static jlong android_view_MotionEvent_nativeCopy(CRITICAL_JNI_PARAMS_COMMA jlong destNativePtr, + jlong sourceNativePtr, jboolean keepHistory) { MotionEvent* destEvent = reinterpret_cast<MotionEvent*>(destNativePtr); if (!destEvent) { destEvent = new MotionEvent(); @@ -609,8 +611,8 @@ static jlong android_view_MotionEvent_nativeCopy(jlong destNativePtr, jlong sour return reinterpret_cast<jlong>(destEvent); } -static jlong android_view_MotionEvent_nativeSplit(jlong destNativePtr, jlong sourceNativePtr, - jint idBits) { +static jlong android_view_MotionEvent_nativeSplit(CRITICAL_JNI_PARAMS_COMMA jlong destNativePtr, + jlong sourceNativePtr, jint idBits) { MotionEvent* destEvent = reinterpret_cast<MotionEvent*>(destNativePtr); if (!destEvent) { destEvent = new MotionEvent(); @@ -621,168 +623,192 @@ static jlong android_view_MotionEvent_nativeSplit(jlong destNativePtr, jlong sou return reinterpret_cast<jlong>(destEvent); } -static jint android_view_MotionEvent_nativeGetId(jlong nativePtr) { +static jint android_view_MotionEvent_nativeGetId(CRITICAL_JNI_PARAMS_COMMA jlong nativePtr) { MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr); return event->getId(); } -static jint android_view_MotionEvent_nativeGetDeviceId(jlong nativePtr) { +static jint android_view_MotionEvent_nativeGetDeviceId(CRITICAL_JNI_PARAMS_COMMA jlong nativePtr) { MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr); return event->getDeviceId(); } -static jint android_view_MotionEvent_nativeGetSource(jlong nativePtr) { +static jint android_view_MotionEvent_nativeGetSource(CRITICAL_JNI_PARAMS_COMMA jlong nativePtr) { MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr); return event->getSource(); } -static void android_view_MotionEvent_nativeSetSource(jlong nativePtr, jint source) { +static void android_view_MotionEvent_nativeSetSource(CRITICAL_JNI_PARAMS_COMMA jlong nativePtr, + jint source) { MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr); event->setSource(source); } -static jint android_view_MotionEvent_nativeGetDisplayId(jlong nativePtr) { +static jint android_view_MotionEvent_nativeGetDisplayId(CRITICAL_JNI_PARAMS_COMMA jlong nativePtr) { MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr); return event->getDisplayId(); } -static void android_view_MotionEvent_nativeSetDisplayId(jlong nativePtr, jint displayId) { +static void android_view_MotionEvent_nativeSetDisplayId(CRITICAL_JNI_PARAMS_COMMA jlong nativePtr, + jint displayId) { MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr); return event->setDisplayId(displayId); } -static jint android_view_MotionEvent_nativeGetAction(jlong nativePtr) { +static jint android_view_MotionEvent_nativeGetAction(CRITICAL_JNI_PARAMS_COMMA jlong nativePtr) { MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr); return event->getAction(); } -static void android_view_MotionEvent_nativeSetAction(jlong nativePtr, jint action) { +static void android_view_MotionEvent_nativeSetAction(CRITICAL_JNI_PARAMS_COMMA jlong nativePtr, + jint action) { MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr); event->setAction(action); } -static int android_view_MotionEvent_nativeGetActionButton(jlong nativePtr) { +static int android_view_MotionEvent_nativeGetActionButton( + CRITICAL_JNI_PARAMS_COMMA jlong nativePtr) { MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr); return event->getActionButton(); } -static void android_view_MotionEvent_nativeSetActionButton(jlong nativePtr, jint button) { +static void android_view_MotionEvent_nativeSetActionButton( + CRITICAL_JNI_PARAMS_COMMA jlong nativePtr, jint button) { MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr); event->setActionButton(button); } -static jboolean android_view_MotionEvent_nativeIsTouchEvent(jlong nativePtr) { +static jboolean android_view_MotionEvent_nativeIsTouchEvent( + CRITICAL_JNI_PARAMS_COMMA jlong nativePtr) { MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr); return event->isTouchEvent(); } -static jint android_view_MotionEvent_nativeGetFlags(jlong nativePtr) { +static jint android_view_MotionEvent_nativeGetFlags(CRITICAL_JNI_PARAMS_COMMA jlong nativePtr) { MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr); return event->getFlags(); } -static void android_view_MotionEvent_nativeSetFlags(jlong nativePtr, jint flags) { +static void android_view_MotionEvent_nativeSetFlags(CRITICAL_JNI_PARAMS_COMMA jlong nativePtr, + jint flags) { MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr); event->setFlags(flags); } -static jint android_view_MotionEvent_nativeGetEdgeFlags(jlong nativePtr) { +static jint android_view_MotionEvent_nativeGetEdgeFlags(CRITICAL_JNI_PARAMS_COMMA jlong nativePtr) { MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr); return event->getEdgeFlags(); } -static void android_view_MotionEvent_nativeSetEdgeFlags(jlong nativePtr, jint edgeFlags) { +static void android_view_MotionEvent_nativeSetEdgeFlags(CRITICAL_JNI_PARAMS_COMMA jlong nativePtr, + jint edgeFlags) { MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr); event->setEdgeFlags(edgeFlags); } -static jint android_view_MotionEvent_nativeGetMetaState(jlong nativePtr) { +static jint android_view_MotionEvent_nativeGetMetaState(CRITICAL_JNI_PARAMS_COMMA jlong nativePtr) { MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr); return event->getMetaState(); } -static jint android_view_MotionEvent_nativeGetButtonState(jlong nativePtr) { +static jint android_view_MotionEvent_nativeGetButtonState( + CRITICAL_JNI_PARAMS_COMMA jlong nativePtr) { MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr); return event->getButtonState(); } -static void android_view_MotionEvent_nativeSetButtonState(jlong nativePtr, jint buttonState) { +static void android_view_MotionEvent_nativeSetButtonState(CRITICAL_JNI_PARAMS_COMMA jlong nativePtr, + jint buttonState) { MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr); event->setButtonState(buttonState); } -static jint android_view_MotionEvent_nativeGetClassification(jlong nativePtr) { +static jint android_view_MotionEvent_nativeGetClassification( + CRITICAL_JNI_PARAMS_COMMA jlong nativePtr) { MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr); return static_cast<jint>(event->getClassification()); } -static void android_view_MotionEvent_nativeOffsetLocation(jlong nativePtr, jfloat deltaX, - jfloat deltaY) { +static void android_view_MotionEvent_nativeOffsetLocation(CRITICAL_JNI_PARAMS_COMMA jlong nativePtr, + jfloat deltaX, jfloat deltaY) { MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr); return event->offsetLocation(deltaX, deltaY); } -static jfloat android_view_MotionEvent_nativeGetRawXOffset(jlong nativePtr) { +static jfloat android_view_MotionEvent_nativeGetRawXOffset( + CRITICAL_JNI_PARAMS_COMMA jlong nativePtr) { MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr); return event->getRawXOffset(); } -static jfloat android_view_MotionEvent_nativeGetRawYOffset(jlong nativePtr) { +static jfloat android_view_MotionEvent_nativeGetRawYOffset( + CRITICAL_JNI_PARAMS_COMMA jlong nativePtr) { MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr); return event->getRawYOffset(); } -static jfloat android_view_MotionEvent_nativeGetXPrecision(jlong nativePtr) { +static jfloat android_view_MotionEvent_nativeGetXPrecision( + CRITICAL_JNI_PARAMS_COMMA jlong nativePtr) { MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr); return event->getXPrecision(); } -static jfloat android_view_MotionEvent_nativeGetYPrecision(jlong nativePtr) { +static jfloat android_view_MotionEvent_nativeGetYPrecision( + CRITICAL_JNI_PARAMS_COMMA jlong nativePtr) { MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr); return event->getYPrecision(); } -static jfloat android_view_MotionEvent_nativeGetXCursorPosition(jlong nativePtr) { +static jfloat android_view_MotionEvent_nativeGetXCursorPosition( + CRITICAL_JNI_PARAMS_COMMA jlong nativePtr) { MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr); return event->getXCursorPosition(); } -static jfloat android_view_MotionEvent_nativeGetYCursorPosition(jlong nativePtr) { +static jfloat android_view_MotionEvent_nativeGetYCursorPosition( + CRITICAL_JNI_PARAMS_COMMA jlong nativePtr) { MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr); return event->getYCursorPosition(); } -static void android_view_MotionEvent_nativeSetCursorPosition(jlong nativePtr, jfloat x, jfloat y) { +static void android_view_MotionEvent_nativeSetCursorPosition( + CRITICAL_JNI_PARAMS_COMMA jlong nativePtr, jfloat x, jfloat y) { MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr); event->setCursorPosition(x, y); } -static jlong android_view_MotionEvent_nativeGetDownTimeNanos(jlong nativePtr) { +static jlong android_view_MotionEvent_nativeGetDownTimeNanos( + CRITICAL_JNI_PARAMS_COMMA jlong nativePtr) { MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr); return event->getDownTime(); } -static void android_view_MotionEvent_nativeSetDownTimeNanos(jlong nativePtr, jlong downTimeNanos) { +static void android_view_MotionEvent_nativeSetDownTimeNanos( + CRITICAL_JNI_PARAMS_COMMA jlong nativePtr, jlong downTimeNanos) { MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr); event->setDownTime(downTimeNanos); } -static jint android_view_MotionEvent_nativeGetPointerCount(jlong nativePtr) { +static jint android_view_MotionEvent_nativeGetPointerCount( + CRITICAL_JNI_PARAMS_COMMA jlong nativePtr) { MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr); return jint(event->getPointerCount()); } -static jint android_view_MotionEvent_nativeFindPointerIndex(jlong nativePtr, jint pointerId) { +static jint android_view_MotionEvent_nativeFindPointerIndex( + CRITICAL_JNI_PARAMS_COMMA jlong nativePtr, jint pointerId) { MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr); return jint(event->findPointerIndex(pointerId)); } -static jint android_view_MotionEvent_nativeGetHistorySize(jlong nativePtr) { +static jint android_view_MotionEvent_nativeGetHistorySize( + CRITICAL_JNI_PARAMS_COMMA jlong nativePtr) { MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr); return jint(event->getHistorySize()); } -static void android_view_MotionEvent_nativeScale(jlong nativePtr, jfloat scale) { +static void android_view_MotionEvent_nativeScale(CRITICAL_JNI_PARAMS_COMMA jlong nativePtr, + jfloat scale) { MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr); event->scale(scale); } diff --git a/core/jni/platform/OWNERS b/core/jni/platform/OWNERS new file mode 100644 index 000000000000..10ce5cfece24 --- /dev/null +++ b/core/jni/platform/OWNERS @@ -0,0 +1,4 @@ +include /graphics/java/android/graphics/OWNERS + +diegoperez@google.com +jgaillard@google.com diff --git a/core/jni/LayoutlibLoader.cpp b/core/jni/platform/host/HostRuntime.cpp index 83b6afa8f8f6..043385513027 100644 --- a/core/jni/LayoutlibLoader.cpp +++ b/core/jni/platform/host/HostRuntime.cpp @@ -80,7 +80,7 @@ int register_libcore_util_NativeAllocationRegistry_Delegate(JNIEnv* env) { namespace android { -extern int register_android_animation_PropertyValuesHolder(JNIEnv *env); +extern int register_android_animation_PropertyValuesHolder(JNIEnv* env); extern int register_android_content_AssetManager(JNIEnv* env); extern int register_android_content_StringBlock(JNIEnv* env); extern int register_android_content_XmlBlock(JNIEnv* env); @@ -106,15 +106,17 @@ extern int register_android_view_MotionEvent(JNIEnv* env); extern int register_android_view_ThreadedRenderer(JNIEnv* env); extern int register_android_graphics_HardwareBufferRenderer(JNIEnv* env); extern int register_android_view_VelocityTracker(JNIEnv* env); -extern int register_com_android_internal_util_VirtualRefBasePtr(JNIEnv *env); +extern int register_com_android_internal_util_VirtualRefBasePtr(JNIEnv* env); -#define REG_JNI(name) { name } +#define REG_JNI(name) \ + { name } struct RegJNIRec { int (*mProc)(JNIEnv*); }; -// Map of all possible class names to register to their corresponding JNI registration function pointer -// The actual list of registered classes will be determined at runtime via the 'native_classes' System property +// Map of all possible class names to register to their corresponding JNI registration function +// pointer The actual list of registered classes will be determined at runtime via the +// 'native_classes' System property static const std::unordered_map<std::string, RegJNIRec> gRegJNIMap = { {"android.animation.PropertyValuesHolder", REG_JNI(register_android_animation_PropertyValuesHolder)}, @@ -154,8 +156,7 @@ static const std::unordered_map<std::string, RegJNIRec> gRegJNIMap = { }; static int register_jni_procs(const std::unordered_map<std::string, RegJNIRec>& jniRegMap, - const vector<string>& classesToRegister, JNIEnv* env) { - + const vector<string>& classesToRegister, JNIEnv* env) { for (const string& className : classesToRegister) { if (jniRegMap.at(className).mProc(env) < 0) { return -1; @@ -169,15 +170,14 @@ static int register_jni_procs(const std::unordered_map<std::string, RegJNIRec>& return 0; } -int AndroidRuntime::registerNativeMethods(JNIEnv* env, - const char* className, const JNINativeMethod* gMethods, int numMethods) { +int AndroidRuntime::registerNativeMethods(JNIEnv* env, const char* className, + const JNINativeMethod* gMethods, int numMethods) { return jniRegisterNativeMethods(env, className, gMethods, numMethods); } JNIEnv* AndroidRuntime::getJNIEnv() { JNIEnv* env; - if (javaVM->GetEnv((void**) &env, JNI_VERSION_1_6) != JNI_OK) - return nullptr; + if (javaVM->GetEnv((void**)&env, JNI_VERSION_1_6) != JNI_OK) return nullptr; return env; } @@ -186,11 +186,10 @@ JavaVM* AndroidRuntime::getJavaVM() { } static vector<string> parseCsv(const string& csvString) { - vector<string> result; + vector<string> result; istringstream stream(csvString); string segment; - while(getline(stream, segment, ',')) - { + while (getline(stream, segment, ',')) { result.push_back(segment); } return result; @@ -274,7 +273,9 @@ static void* mmapFile(const char* dataFilePath) { } struct CloseHandleWrapper { - void operator()(HANDLE h) { CloseHandle(h); } + void operator()(HANDLE h) { + CloseHandle(h); + } }; std::unique_ptr<void, CloseHandleWrapper> mmapHandle( CreateFileMapping(file, nullptr, PAGE_READONLY, 0, 0, nullptr)); @@ -384,8 +385,9 @@ JNIEXPORT jint JNI_OnLoad(JavaVM* vm, void*) { // Configuration is stored as java System properties. // Get a reference to System.getProperty jclass system = FindClassOrDie(env, "java/lang/System"); - jmethodID getPropertyMethod = GetStaticMethodIDOrDie(env, system, "getProperty", - "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"); + jmethodID getPropertyMethod = + GetStaticMethodIDOrDie(env, system, "getProperty", + "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"); // Java system properties that contain LayoutLib config. The initial values in the map // are the default values if the property is not specified. |