quickjs-tart

quickjs-based runtime for wallet-core logic
Log | Files | Refs | README | LICENSE

commit b10db51fc0e5da178519321d2069bdbc4996fed9
parent 2a21b28474484d74ae2863e532364d7a9d8fccdd
Author: Iván Ávalos <avalos@disroot.org>
Date:   Thu, 26 Dec 2024 16:27:39 +0100

android: bump qtart version to 0.14.1 and implement TALER_WALLET_destroy

Diffstat:
AQuickJS-android/.idea/QuickJS-android.iml | 10++++++++++
AQuickJS-android/.idea/caches/deviceStreaming.xml | 341+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
AQuickJS-android/.idea/codeStyles/Project.xml | 118+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
AQuickJS-android/.idea/codeStyles/codeStyleConfig.xml | 6++++++
AQuickJS-android/.idea/kotlinc.xml | 7+++++++
AQuickJS-android/.idea/migrations.xml | 11+++++++++++
MQuickJS-android/.idea/misc.xml | 2+-
AQuickJS-android/.idea/runConfigurations.xml | 18++++++++++++++++++
MQuickJS-android/gradle.properties | 4++--
MQuickJS-android/qtart/src/main/java/net/taler/qtart/TalerWalletCore.kt | 5+++++
Mtaler_wallet_core_lib.c | 4++--
11 files changed, 521 insertions(+), 5 deletions(-)

diff --git a/QuickJS-android/.idea/QuickJS-android.iml b/QuickJS-android/.idea/QuickJS-android.iml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<module type="JAVA_MODULE" version="4"> + <component name="NewModuleRootManager" inherit-compiler-output="true"> + <exclude-output /> + <content url="file://$MODULE_DIR$" /> + <orderEntry type="inheritedJdk" /> + <orderEntry type="sourceFolder" forTests="false" /> + </component> +</module> +\ No newline at end of file diff --git a/QuickJS-android/.idea/caches/deviceStreaming.xml b/QuickJS-android/.idea/caches/deviceStreaming.xml @@ -0,0 +1,340 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="DeviceStreaming"> + <option name="deviceSelectionList"> + <list> + <PersistentDeviceSelectionData> + <option name="api" value="27" /> + <option name="brand" value="DOCOMO" /> + <option name="codename" value="F01L" /> + <option name="id" value="F01L" /> + <option name="manufacturer" value="FUJITSU" /> + <option name="name" value="F-01L" /> + <option name="screenDensity" value="360" /> + <option name="screenX" value="720" /> + <option name="screenY" value="1280" /> + </PersistentDeviceSelectionData> + <PersistentDeviceSelectionData> + <option name="api" value="34" /> + <option name="brand" value="OPPO" /> + <option name="codename" value="OP573DL1" /> + <option name="id" value="OP573DL1" /> + <option name="manufacturer" value="OPPO" /> + <option name="name" value="CPH2557" /> + <option name="screenDensity" value="480" /> + <option name="screenX" value="1080" /> + <option name="screenY" value="2400" /> + </PersistentDeviceSelectionData> + <PersistentDeviceSelectionData> + <option name="api" value="28" /> + <option name="brand" value="DOCOMO" /> + <option name="codename" value="SH-01L" /> + <option name="id" value="SH-01L" /> + <option name="manufacturer" value="SHARP" /> + <option name="name" value="AQUOS sense2 SH-01L" /> + <option name="screenDensity" value="480" /> + <option name="screenX" value="1080" /> + <option name="screenY" value="2160" /> + </PersistentDeviceSelectionData> + <PersistentDeviceSelectionData> + <option name="api" value="34" /> + <option name="brand" value="Lenovo" /> + <option name="codename" value="TB370FU" /> + <option name="id" value="TB370FU" /> + <option name="manufacturer" value="Lenovo" /> + <option name="name" value="Tab P12" /> + <option name="screenDensity" value="340" /> + <option name="screenX" value="1840" /> + <option name="screenY" value="2944" /> + </PersistentDeviceSelectionData> + <PersistentDeviceSelectionData> + <option name="api" value="31" /> + <option name="brand" value="samsung" /> + <option name="codename" value="a51" /> + <option name="id" value="a51" /> + <option name="manufacturer" value="Samsung" /> + <option name="name" value="Galaxy A51" /> + <option name="screenDensity" value="420" /> + <option name="screenX" value="1080" /> + <option name="screenY" value="2400" /> + </PersistentDeviceSelectionData> + <PersistentDeviceSelectionData> + <option name="api" value="34" /> + <option name="brand" value="google" /> + <option name="codename" value="akita" /> + <option name="id" value="akita" /> + <option name="manufacturer" value="Google" /> + <option name="name" value="Pixel 8a" /> + <option name="screenDensity" value="420" /> + <option name="screenX" value="1080" /> + <option name="screenY" value="2400" /> + </PersistentDeviceSelectionData> + <PersistentDeviceSelectionData> + <option name="api" value="33" /> + <option name="brand" value="samsung" /> + <option name="codename" value="b0q" /> + <option name="id" value="b0q" /> + <option name="manufacturer" value="Samsung" /> + <option name="name" value="Galaxy S22 Ultra" /> + <option name="screenDensity" value="600" /> + <option name="screenX" value="1440" /> + <option name="screenY" value="3088" /> + </PersistentDeviceSelectionData> + <PersistentDeviceSelectionData> + <option name="api" value="32" /> + <option name="brand" value="google" /> + <option name="codename" value="bluejay" /> + <option name="id" value="bluejay" /> + <option name="manufacturer" value="Google" /> + <option name="name" value="Pixel 6a" /> + <option name="screenDensity" value="420" /> + <option name="screenX" value="1080" /> + <option name="screenY" value="2400" /> + </PersistentDeviceSelectionData> + <PersistentDeviceSelectionData> + <option name="api" value="34" /> + <option name="brand" value="google" /> + <option name="codename" value="caiman" /> + <option name="id" value="caiman" /> + <option name="manufacturer" value="Google" /> + <option name="name" value="Pixel 9 Pro" /> + <option name="screenDensity" value="360" /> + <option name="screenX" value="960" /> + <option name="screenY" value="2142" /> + </PersistentDeviceSelectionData> + <PersistentDeviceSelectionData> + <option name="api" value="34" /> + <option name="brand" value="google" /> + <option name="codename" value="comet" /> + <option name="id" value="comet" /> + <option name="manufacturer" value="Google" /> + <option name="name" value="Pixel 9 Pro Fold" /> + <option name="screenDensity" value="390" /> + <option name="screenX" value="2076" /> + <option name="screenY" value="2152" /> + </PersistentDeviceSelectionData> + <PersistentDeviceSelectionData> + <option name="api" value="29" /> + <option name="brand" value="samsung" /> + <option name="codename" value="crownqlteue" /> + <option name="id" value="crownqlteue" /> + <option name="manufacturer" value="Samsung" /> + <option name="name" value="Galaxy Note9" /> + <option name="screenDensity" value="420" /> + <option name="screenX" value="2220" /> + <option name="screenY" value="1080" /> + </PersistentDeviceSelectionData> + <PersistentDeviceSelectionData> + <option name="api" value="34" /> + <option name="brand" value="samsung" /> + <option name="codename" value="dm3q" /> + <option name="id" value="dm3q" /> + <option name="manufacturer" value="Samsung" /> + <option name="name" value="Galaxy S23 Ultra" /> + <option name="screenDensity" value="600" /> + <option name="screenX" value="1440" /> + <option name="screenY" value="3088" /> + </PersistentDeviceSelectionData> + <PersistentDeviceSelectionData> + <option name="api" value="34" /> + <option name="brand" value="samsung" /> + <option name="codename" value="e1q" /> + <option name="id" value="e1q" /> + <option name="manufacturer" value="Samsung" /> + <option name="name" value="Galaxy S24" /> + <option name="screenDensity" value="480" /> + <option name="screenX" value="1080" /> + <option name="screenY" value="2340" /> + </PersistentDeviceSelectionData> + <PersistentDeviceSelectionData> + <option name="api" value="33" /> + <option name="brand" value="google" /> + <option name="codename" value="felix" /> + <option name="id" value="felix" /> + <option name="manufacturer" value="Google" /> + <option name="name" value="Pixel Fold" /> + <option name="screenDensity" value="420" /> + <option name="screenX" value="2208" /> + <option name="screenY" value="1840" /> + </PersistentDeviceSelectionData> + <PersistentDeviceSelectionData> + <option name="api" value="34" /> + <option name="brand" value="google" /> + <option name="codename" value="felix" /> + <option name="id" value="felix" /> + <option name="manufacturer" value="Google" /> + <option name="name" value="Pixel Fold" /> + <option name="screenDensity" value="420" /> + <option name="screenX" value="2208" /> + <option name="screenY" value="1840" /> + </PersistentDeviceSelectionData> + <PersistentDeviceSelectionData> + <option name="api" value="33" /> + <option name="brand" value="google" /> + <option name="codename" value="felix_camera" /> + <option name="id" value="felix_camera" /> + <option name="manufacturer" value="Google" /> + <option name="name" value="Pixel Fold (Camera-enabled)" /> + <option name="screenDensity" value="420" /> + <option name="screenX" value="2208" /> + <option name="screenY" value="1840" /> + </PersistentDeviceSelectionData> + <PersistentDeviceSelectionData> + <option name="api" value="33" /> + <option name="brand" value="samsung" /> + <option name="codename" value="gts8uwifi" /> + <option name="id" value="gts8uwifi" /> + <option name="manufacturer" value="Samsung" /> + <option name="name" value="Galaxy Tab S8 Ultra" /> + <option name="screenDensity" value="320" /> + <option name="screenX" value="1848" /> + <option name="screenY" value="2960" /> + </PersistentDeviceSelectionData> + <PersistentDeviceSelectionData> + <option name="api" value="34" /> + <option name="brand" value="google" /> + <option name="codename" value="husky" /> + <option name="id" value="husky" /> + <option name="manufacturer" value="Google" /> + <option name="name" value="Pixel 8 Pro" /> + <option name="screenDensity" value="390" /> + <option name="screenX" value="1008" /> + <option name="screenY" value="2244" /> + </PersistentDeviceSelectionData> + <PersistentDeviceSelectionData> + <option name="api" value="30" /> + <option name="brand" value="motorola" /> + <option name="codename" value="java" /> + <option name="id" value="java" /> + <option name="manufacturer" value="Motorola" /> + <option name="name" value="G20" /> + <option name="screenDensity" value="280" /> + <option name="screenX" value="720" /> + <option name="screenY" value="1600" /> + </PersistentDeviceSelectionData> + <PersistentDeviceSelectionData> + <option name="api" value="34" /> + <option name="brand" value="google" /> + <option name="codename" value="komodo" /> + <option name="id" value="komodo" /> + <option name="manufacturer" value="Google" /> + <option name="name" value="Pixel 9 Pro XL" /> + <option name="screenDensity" value="360" /> + <option name="screenX" value="1008" /> + <option name="screenY" value="2244" /> + </PersistentDeviceSelectionData> + <PersistentDeviceSelectionData> + <option name="api" value="33" /> + <option name="brand" value="google" /> + <option name="codename" value="lynx" /> + <option name="id" value="lynx" /> + <option name="manufacturer" value="Google" /> + <option name="name" value="Pixel 7a" /> + <option name="screenDensity" value="420" /> + <option name="screenX" value="1080" /> + <option name="screenY" value="2400" /> + </PersistentDeviceSelectionData> + <PersistentDeviceSelectionData> + <option name="api" value="31" /> + <option name="brand" value="google" /> + <option name="codename" value="oriole" /> + <option name="id" value="oriole" /> + <option name="manufacturer" value="Google" /> + <option name="name" value="Pixel 6" /> + <option name="screenDensity" value="420" /> + <option name="screenX" value="1080" /> + <option name="screenY" value="2400" /> + </PersistentDeviceSelectionData> + <PersistentDeviceSelectionData> + <option name="api" value="33" /> + <option name="brand" value="google" /> + <option name="codename" value="panther" /> + <option name="id" value="panther" /> + <option name="manufacturer" value="Google" /> + <option name="name" value="Pixel 7" /> + <option name="screenDensity" value="420" /> + <option name="screenX" value="1080" /> + <option name="screenY" value="2400" /> + </PersistentDeviceSelectionData> + <PersistentDeviceSelectionData> + <option name="api" value="34" /> + <option name="brand" value="samsung" /> + <option name="codename" value="q5q" /> + <option name="id" value="q5q" /> + <option name="manufacturer" value="Samsung" /> + <option name="name" value="Galaxy Z Fold5" /> + <option name="screenDensity" value="420" /> + <option name="screenX" value="1812" /> + <option name="screenY" value="2176" /> + </PersistentDeviceSelectionData> + <PersistentDeviceSelectionData> + <option name="api" value="34" /> + <option name="brand" value="samsung" /> + <option name="codename" value="q6q" /> + <option name="id" value="q6q" /> + <option name="manufacturer" value="Samsung" /> + <option name="name" value="Galaxy Z Fold6" /> + <option name="screenDensity" value="420" /> + <option name="screenX" value="1856" /> + <option name="screenY" value="2160" /> + </PersistentDeviceSelectionData> + <PersistentDeviceSelectionData> + <option name="api" value="30" /> + <option name="brand" value="google" /> + <option name="codename" value="r11" /> + <option name="id" value="r11" /> + <option name="manufacturer" value="Google" /> + <option name="name" value="Pixel Watch" /> + <option name="screenDensity" value="320" /> + <option name="screenX" value="384" /> + <option name="screenY" value="384" /> + <option name="type" value="WEAR_OS" /> + </PersistentDeviceSelectionData> + <PersistentDeviceSelectionData> + <option name="api" value="30" /> + <option name="brand" value="google" /> + <option name="codename" value="redfin" /> + <option name="id" value="redfin" /> + <option name="manufacturer" value="Google" /> + <option name="name" value="Pixel 5" /> + <option name="screenDensity" value="440" /> + <option name="screenX" value="1080" /> + <option name="screenY" value="2340" /> + </PersistentDeviceSelectionData> + <PersistentDeviceSelectionData> + <option name="api" value="34" /> + <option name="brand" value="google" /> + <option name="codename" value="shiba" /> + <option name="id" value="shiba" /> + <option name="manufacturer" value="Google" /> + <option name="name" value="Pixel 8" /> + <option name="screenDensity" value="420" /> + <option name="screenX" value="1080" /> + <option name="screenY" value="2400" /> + </PersistentDeviceSelectionData> + <PersistentDeviceSelectionData> + <option name="api" value="33" /> + <option name="brand" value="google" /> + <option name="codename" value="tangorpro" /> + <option name="id" value="tangorpro" /> + <option name="manufacturer" value="Google" /> + <option name="name" value="Pixel Tablet" /> + <option name="screenDensity" value="320" /> + <option name="screenX" value="1600" /> + <option name="screenY" value="2560" /> + </PersistentDeviceSelectionData> + <PersistentDeviceSelectionData> + <option name="api" value="34" /> + <option name="brand" value="google" /> + <option name="codename" value="tokay" /> + <option name="id" value="tokay" /> + <option name="manufacturer" value="Google" /> + <option name="name" value="Pixel 9" /> + <option name="screenDensity" value="420" /> + <option name="screenX" value="1080" /> + <option name="screenY" value="2424" /> + </PersistentDeviceSelectionData> + </list> + </option> + </component> +</project> +\ No newline at end of file diff --git a/QuickJS-android/.idea/codeStyles/Project.xml b/QuickJS-android/.idea/codeStyles/Project.xml @@ -0,0 +1,117 @@ +<component name="ProjectCodeStyleConfiguration"> + <code_scheme name="Project" version="173"> + <codeStyleSettings language="XML"> + <option name="FORCE_REARRANGE_MODE" value="1" /> + <indentOptions> + <option name="CONTINUATION_INDENT_SIZE" value="4" /> + </indentOptions> + <arrangement> + <rules> + <section> + <rule> + <match> + <AND> + <NAME>xmlns:android</NAME> + <XML_ATTRIBUTE /> + <XML_NAMESPACE>^$</XML_NAMESPACE> + </AND> + </match> + </rule> + </section> + <section> + <rule> + <match> + <AND> + <NAME>xmlns:.*</NAME> + <XML_ATTRIBUTE /> + <XML_NAMESPACE>^$</XML_NAMESPACE> + </AND> + </match> + <order>BY_NAME</order> + </rule> + </section> + <section> + <rule> + <match> + <AND> + <NAME>.*:id</NAME> + <XML_ATTRIBUTE /> + <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE> + </AND> + </match> + </rule> + </section> + <section> + <rule> + <match> + <AND> + <NAME>.*:name</NAME> + <XML_ATTRIBUTE /> + <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE> + </AND> + </match> + </rule> + </section> + <section> + <rule> + <match> + <AND> + <NAME>name</NAME> + <XML_ATTRIBUTE /> + <XML_NAMESPACE>^$</XML_NAMESPACE> + </AND> + </match> + </rule> + </section> + <section> + <rule> + <match> + <AND> + <NAME>style</NAME> + <XML_ATTRIBUTE /> + <XML_NAMESPACE>^$</XML_NAMESPACE> + </AND> + </match> + </rule> + </section> + <section> + <rule> + <match> + <AND> + <NAME>.*</NAME> + <XML_ATTRIBUTE /> + <XML_NAMESPACE>^$</XML_NAMESPACE> + </AND> + </match> + <order>BY_NAME</order> + </rule> + </section> + <section> + <rule> + <match> + <AND> + <NAME>.*</NAME> + <XML_ATTRIBUTE /> + <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE> + </AND> + </match> + <order>ANDROID_ATTRIBUTE_ORDER</order> + </rule> + </section> + <section> + <rule> + <match> + <AND> + <NAME>.*</NAME> + <XML_ATTRIBUTE /> + <XML_NAMESPACE>.*</XML_NAMESPACE> + </AND> + </match> + <order>BY_NAME</order> + </rule> + </section> + </rules> + </arrangement> + </codeStyleSettings> + </code_scheme> +</component> +\ No newline at end of file diff --git a/QuickJS-android/.idea/codeStyles/codeStyleConfig.xml b/QuickJS-android/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ +<component name="ProjectCodeStyleConfiguration"> + <state> + <option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" /> + </state> +</component> +\ No newline at end of file diff --git a/QuickJS-android/.idea/kotlinc.xml b/QuickJS-android/.idea/kotlinc.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="KotlinJpsPluginSettings"> + <option name="version" value="1.7.22" /> + </component> +</project> +\ No newline at end of file diff --git a/QuickJS-android/.idea/migrations.xml b/QuickJS-android/.idea/migrations.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="ProjectMigrations"> + <option name="MigrateToGradleLocalJavaHome"> + <set> + <option value="$PROJECT_DIR$" /> + </set> + </option> + </component> +</project> +\ No newline at end of file diff --git a/QuickJS-android/.idea/misc.xml b/QuickJS-android/.idea/misc.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <project version="4"> <component name="ExternalStorageConfigurationManager" enabled="true" /> - <component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="jbr-17" project-jdk-type="JavaSDK"> + <component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="17" project-jdk-type="JavaSDK"> <output url="file://$PROJECT_DIR$/build/classes" /> </component> <component name="ProjectType"> diff --git a/QuickJS-android/.idea/runConfigurations.xml b/QuickJS-android/.idea/runConfigurations.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="RunConfigurationProducerService"> + <option name="ignoredProducers"> + <set> + <option value="com.intellij.execution.junit.AbstractAllInDirectoryConfigurationProducer" /> + <option value="com.intellij.execution.junit.AllInPackageConfigurationProducer" /> + <option value="com.intellij.execution.junit.PatternConfigurationProducer" /> + <option value="com.intellij.execution.junit.TestInClassConfigurationProducer" /> + <option value="com.intellij.execution.junit.UniqueIdConfigurationProducer" /> + <option value="com.intellij.execution.junit.testDiscovery.JUnitTestDiscoveryConfigurationProducer" /> + <option value="org.jetbrains.kotlin.idea.junit.KotlinJUnitRunConfigurationProducer" /> + <option value="org.jetbrains.kotlin.idea.junit.KotlinPatternConfigurationProducer" /> + </set> + </option> + </component> +</project> +\ No newline at end of file diff --git a/QuickJS-android/gradle.properties b/QuickJS-android/gradle.properties @@ -2,7 +2,7 @@ android.useAndroidX=true GROUP=net.taler POM_ARTIFACT_ID=qtart -VERSION_NAME=0.14.0 +VERSION_NAME=0.14.1 POM_NAME=QuickjsTart POM_DESCRIPTION=QuickJS runtime for Taler @@ -21,4 +21,4 @@ POM_DEVELOPER_ID=avalos POM_DEVELOPER_NAME=Iván Ávalos POM_DEVELOPER_URL=https://avalos.me/ -WALLET_CORE_VERSION=v0.14.0 +WALLET_CORE_VERSION=v0.14.1 diff --git a/QuickJS-android/qtart/src/main/java/net/taler/qtart/TalerWalletCore.kt b/QuickJS-android/qtart/src/main/java/net/taler/qtart/TalerWalletCore.kt @@ -65,6 +65,7 @@ class TalerWalletCore { fun TALER_WALLET_send_request(twi: Pointer, request: String): Int fun TALER_WALLET_run(twi: Pointer): Int fun TALER_WALLET_join(twi: Pointer) + fun TALER_WALLET_destroy(twi: Pointer) fun TALER_start_redirect_std(logfn: TALER_LogFn, cls: Pointer) fun TALER_set_curl_http_client(twi: Pointer) @@ -187,6 +188,10 @@ class TalerWalletCore { TalerNative.INSTANCE.TALER_WALLET_run(walletInstance) } + fun destroy() { + TalerNative.INSTANCE.TALER_WALLET_destroy(walletInstance) + } + fun join() { TalerNative.INSTANCE.TALER_WALLET_join(walletInstance) } diff --git a/taler_wallet_core_lib.c b/taler_wallet_core_lib.c @@ -21,6 +21,7 @@ #include "tart_module.h" #include <pthread.h> #include "quickjs/list.h" +#include <signal.h> #include <unistd.h> #include <string.h> @@ -274,11 +275,10 @@ void TALER_WALLET_join(struct TALER_WALLET_Instance *wh) void TALER_WALLET_destroy(struct TALER_WALLET_Instance *twi) { - // FIXME: Implement! + pthread_kill(twi->wallet_thread, SIGKILL); } - struct LogRedirectContext { int active; TALER_LogFn logfn;