mirror of
https://github.com/signalapp/libsignal.git
synced 2024-09-20 03:52:17 +02:00
Don't include the Future testing APIs when building for Android
This commit is contained in:
parent
a15fffd058
commit
5fde77a631
@ -39,6 +39,7 @@ ignore_this_warning = re.compile(
|
||||
"("
|
||||
r"WARN: Can't find .*\. This usually means that this type was incompatible or not found\.|"
|
||||
r"WARN: Missing `\[defines\]` entry for `feature = \".*\"` in cbindgen config\.|"
|
||||
r"WARN: Missing `\[defines\]` entry for `target_os = \"android\"` in cbindgen config\.|"
|
||||
r"WARN: Skip libsignal-bridge::.+ - \(not `(?:pub|no_mangle)`\)\.|"
|
||||
r"WARN: Couldn't find path for Array\(Path\(GenericPath \{ .+ \}\), Name\(\"LEN\"\)\), skipping associated constants|"
|
||||
r"WARN: Cannot find a mangling for generic path GenericPath { path: Path { name: \"JavaFuture\" }.+"
|
||||
|
@ -7,12 +7,10 @@
|
||||
#![deny(clippy::unwrap_used)]
|
||||
|
||||
use jni::objects::{JByteArray, JClass, JLongArray, JObject};
|
||||
use jni::sys::jint;
|
||||
use jni::JNIEnv;
|
||||
use std::convert::TryFrom;
|
||||
|
||||
use libsignal_bridge::jni::*;
|
||||
use libsignal_bridge::{jni_args, jni_class_name};
|
||||
use libsignal_protocol::*;
|
||||
|
||||
pub mod logging;
|
||||
@ -50,40 +48,50 @@ pub unsafe extern "C" fn Java_org_signal_libsignal_internal_Native_keepAlive(
|
||||
) {
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn Java_org_signal_libsignal_internal_Native_Future_1success<'local>(
|
||||
mut env: JNIEnv<'local>,
|
||||
_class: JClass,
|
||||
) -> JavaFuture<'local, jint> {
|
||||
run_ffi_safe(&mut env, |env| {
|
||||
let future = new_object(
|
||||
env,
|
||||
jni_class_name!(org.signal.libsignal.internal.CompletableFuture),
|
||||
jni_args!(() -> void),
|
||||
)?;
|
||||
let completer = FutureCompleter::new(env, &future)?;
|
||||
std::thread::spawn(move || completer.complete(42));
|
||||
Ok(future.into())
|
||||
})
|
||||
}
|
||||
// These APIs are only useful for tests.
|
||||
// To save on code size, we omit them when building for Android.
|
||||
#[cfg(not(target_os = "android"))]
|
||||
mod test_apis {
|
||||
use super::*;
|
||||
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn Java_org_signal_libsignal_internal_Native_Future_1failure<'local>(
|
||||
mut env: JNIEnv<'local>,
|
||||
_class: JClass,
|
||||
) -> JavaFuture<'local, jint> {
|
||||
run_ffi_safe(&mut env, |env| {
|
||||
let future = new_object(
|
||||
env,
|
||||
jni_class_name!(org.signal.libsignal.internal.CompletableFuture),
|
||||
jni_args!(() -> void),
|
||||
)?;
|
||||
let completer = FutureCompleter::new(env, &future)?;
|
||||
std::thread::spawn(move || {
|
||||
completer.complete(Err::<(), _>(SignalProtocolError::InvalidArgument(
|
||||
"failure".to_string(),
|
||||
)))
|
||||
});
|
||||
Ok(future.into())
|
||||
})
|
||||
use jni::sys::jint;
|
||||
use libsignal_bridge::{jni_args, jni_class_name};
|
||||
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn Java_org_signal_libsignal_internal_Native_Future_1success<'local>(
|
||||
mut env: JNIEnv<'local>,
|
||||
_class: JClass,
|
||||
) -> JavaFuture<'local, jint> {
|
||||
run_ffi_safe(&mut env, |env| {
|
||||
let future = new_object(
|
||||
env,
|
||||
jni_class_name!(org.signal.libsignal.internal.CompletableFuture),
|
||||
jni_args!(() -> void),
|
||||
)?;
|
||||
let completer = FutureCompleter::new(env, &future)?;
|
||||
std::thread::spawn(move || completer.complete(42));
|
||||
Ok(future.into())
|
||||
})
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn Java_org_signal_libsignal_internal_Native_Future_1failure<'local>(
|
||||
mut env: JNIEnv<'local>,
|
||||
_class: JClass,
|
||||
) -> JavaFuture<'local, jint> {
|
||||
run_ffi_safe(&mut env, |env| {
|
||||
let future = new_object(
|
||||
env,
|
||||
jni_class_name!(org.signal.libsignal.internal.CompletableFuture),
|
||||
jni_args!(() -> void),
|
||||
)?;
|
||||
let completer = FutureCompleter::new(env, &future)?;
|
||||
std::thread::spawn(move || {
|
||||
completer.complete(Err::<(), _>(SignalProtocolError::InvalidArgument(
|
||||
"failure".to_string(),
|
||||
)))
|
||||
});
|
||||
Ok(future.into())
|
||||
})
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user