qt5base-lts/tests/auto/corelib/kernel
Volker Hilsheimer 185c3b080c JNI: Fix native functions that take a declared QtJniTypes class
Now that QtJniTypes::Objects are no longer primitive types that are the
same as a jobject, using those types in registered native functions
breaks. JNI will call those function with a jobject on the function
pointer, and lacking any type safety, the call to the registered
function will proceed with a wrong type of object on the stack.

To fix that, register the native function via a proxy that is a variadic
argument function, and unpack the variadic arguments into a list of
typed arguments, using the types we know the user-code function wants.
Then call the function with a tuple of those types using std::apply,
which gives us type safety and implicit conversion for free.

Add a test that exercises this.

Change-Id: I9f980e55d3d13f8fc16c410dc0d17dbdc200cb47
Reviewed-by: Juha Vuolle <juha.vuolle@qt.io>
2023-09-27 19:44:58 +02:00
..
qapplicationstatic CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qcoreapplication CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qdeadlinetimer CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qelapsedtimer CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qeventdispatcher tst_qeventdispatcher: port to QDeadlineTimer 2023-09-04 22:40:35 +03:00
qeventloop Remove the unix dispatcher from WASM builds 2023-08-22 17:19:50 +02:00
qjnienvironment CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qjniobject JNI: Fix native functions that take a declared QtJniTypes class 2023-09-27 19:44:58 +02:00
qjnitypes JNI: Fix native functions that take a declared QtJniTypes class 2023-09-27 19:44:58 +02:00
qmath CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qmetacontainer CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qmetaenum CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qmetamethod CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qmetaobject invokeMethod: Try invoking functor and member function accepting pointer, returning void 2023-08-24 07:45:04 +02:00
qmetaobjectbuilder CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qmetaproperty CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qmetatype QMetaType: fix recursive detection of std::optional operators 2023-07-31 18:43:55 -07:00
qmimedata tests/auto/*: port Q_FOREACH to ranged-for 2023-08-19 16:29:09 +03:00
qobject Allow QObjects to opt in to receiving ParentAboutToChange/ParentChange 2023-08-30 15:45:41 +02:00
qpermission Constrain QCoreApplication::requestPermission to compatible functors 2023-09-01 03:30:50 +02:00
qpointer QPointer: also provide a converting assignment operator 2023-09-23 22:10:10 +00:00
qproperty QProperty: Steal currentCompatProperty while evaluating a different one 2023-09-27 09:31:41 +00:00
qsignalblocker Implement QSignalBlocker::dismiss() 2023-08-31 22:11:51 +00:00
qsignalmapper CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qsocketnotifier QSocketNotifier: firm up the ordering in unexpectedDisconnection() 2023-07-11 13:44:29 -07:00
qtimer QTimer: extend property tests and fix binding loop 2023-09-03 18:20:51 +02:00
qtranslator Give QLocale::uiLanguages() a separator parameter 2023-08-16 16:25:48 +02:00
qvariant QVariant: add fromMetaType 2023-09-20 00:05:53 +02:00
qwineventnotifier CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qwinregistrykey CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
CMakeLists.txt tests: Remove remains of qmake conversion from CMakeLists.txt files 2023-02-17 21:56:49 +01:00