diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-12-11 15:30:33 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-12-14 13:22:56 +0000 |
| commit | 220b25415ebb384382cc9b971bede1a14e510a9f (patch) | |
| tree | 857bff1117c58c3d71446036ccca4c99f648e55b | |
| parent | 7ee3dcc5b46faef4bc0c0aee0231f1a66a12b148 (diff) | |
| download | mullvadvpn-220b25415ebb384382cc9b971bede1a14e510a9f.tar.xz mullvadvpn-220b25415ebb384382cc9b971bede1a14e510a9f.zip | |
Move problem report JNI methods to a new module
| -rw-r--r-- | mullvad-jni/src/lib.rs | 66 | ||||
| -rw-r--r-- | mullvad-jni/src/problem_report.rs | 73 |
2 files changed, 75 insertions, 64 deletions
diff --git a/mullvad-jni/src/lib.rs b/mullvad-jni/src/lib.rs index 94d5d77313..35fe78dd01 100644 --- a/mullvad-jni/src/lib.rs +++ b/mullvad-jni/src/lib.rs @@ -5,6 +5,7 @@ mod classes; mod daemon_interface; mod is_null; mod jni_event_listener; +mod problem_report; mod talpid_vpn_service; use crate::{daemon_interface::DaemonInterface, jni_event_listener::JniEventListener}; @@ -12,7 +13,7 @@ use jnix::{ jni::{ objects::{GlobalRef, JObject, JString, JValue}, signature::{JavaType, Primitive}, - sys::{jboolean, jlong, JNI_FALSE, JNI_TRUE}, + sys::{jboolean, jlong}, JNIEnv, JavaVM, }, FromJava, IntoJava, JnixEnv, @@ -935,69 +936,6 @@ pub extern "system" fn Java_net_mullvad_mullvadvpn_service_MullvadDaemon_updateR } } -#[no_mangle] -#[allow(non_snake_case)] -pub extern "system" fn Java_net_mullvad_mullvadvpn_dataproxy_MullvadProblemReport_collectReport( - env: JNIEnv<'_>, - _: JObject<'_>, - logDirectory: JString<'_>, - outputPath: JString<'_>, -) -> jboolean { - let env = JnixEnv::from(env); - let log_dir_string = String::from_java(&env, logDirectory); - let log_dir = Path::new(&log_dir_string); - let output_path_string = String::from_java(&env, outputPath); - let output_path = Path::new(&output_path_string); - - match mullvad_problem_report::collect_report(&[], output_path, Vec::new(), log_dir) { - Ok(()) => JNI_TRUE, - Err(error) => { - log::error!( - "{}", - error.display_chain_with_msg("Failed to collect problem report") - ); - JNI_FALSE - } - } -} - -#[no_mangle] -#[allow(non_snake_case)] -pub extern "system" fn Java_net_mullvad_mullvadvpn_dataproxy_MullvadProblemReport_sendProblemReport( - env: JNIEnv<'_>, - _: JObject<'_>, - userEmail: JString<'_>, - userMessage: JString<'_>, - outputPath: JString<'_>, - resourcesDirectory: JString<'_>, -) -> jboolean { - let env = JnixEnv::from(env); - let user_email = String::from_java(&env, userEmail); - let user_message = String::from_java(&env, userMessage); - let output_path_string = String::from_java(&env, outputPath); - let output_path = Path::new(&output_path_string); - let resources_directory_string = String::from_java(&env, resourcesDirectory); - let resources_directory = Path::new(&resources_directory_string); - - let send_result = mullvad_problem_report::send_problem_report( - &user_email, - &user_message, - output_path, - resources_directory, - ); - - match send_result { - Ok(()) => JNI_TRUE, - Err(error) => { - log::error!( - "{}", - error.display_chain_with_msg("Failed to send problem report") - ); - JNI_FALSE - } - } -} - fn log_request_error(request: &str, error: &daemon_interface::Error) { match error { daemon_interface::Error::RpcError(RestError::Aborted(_)) => { diff --git a/mullvad-jni/src/problem_report.rs b/mullvad-jni/src/problem_report.rs new file mode 100644 index 0000000000..fb83c06bdc --- /dev/null +++ b/mullvad-jni/src/problem_report.rs @@ -0,0 +1,73 @@ +use jnix::{ + jni::{ + objects::{JObject, JString}, + sys::{jboolean, JNI_FALSE, JNI_TRUE}, + JNIEnv, + }, + FromJava, JnixEnv, +}; +use std::path::Path; +use talpid_types::ErrorExt; + +#[no_mangle] +#[allow(non_snake_case)] +pub extern "system" fn Java_net_mullvad_mullvadvpn_dataproxy_MullvadProblemReport_collectReport( + env: JNIEnv<'_>, + _: JObject<'_>, + logDirectory: JString<'_>, + outputPath: JString<'_>, +) -> jboolean { + let env = JnixEnv::from(env); + let log_dir_string = String::from_java(&env, logDirectory); + let log_dir = Path::new(&log_dir_string); + let output_path_string = String::from_java(&env, outputPath); + let output_path = Path::new(&output_path_string); + + match mullvad_problem_report::collect_report(&[], output_path, Vec::new(), log_dir) { + Ok(()) => JNI_TRUE, + Err(error) => { + log::error!( + "{}", + error.display_chain_with_msg("Failed to collect problem report") + ); + JNI_FALSE + } + } +} + +#[no_mangle] +#[allow(non_snake_case)] +pub extern "system" fn Java_net_mullvad_mullvadvpn_dataproxy_MullvadProblemReport_sendProblemReport( + env: JNIEnv<'_>, + _: JObject<'_>, + userEmail: JString<'_>, + userMessage: JString<'_>, + outputPath: JString<'_>, + resourcesDirectory: JString<'_>, +) -> jboolean { + let env = JnixEnv::from(env); + let user_email = String::from_java(&env, userEmail); + let user_message = String::from_java(&env, userMessage); + let output_path_string = String::from_java(&env, outputPath); + let output_path = Path::new(&output_path_string); + let resources_directory_string = String::from_java(&env, resourcesDirectory); + let resources_directory = Path::new(&resources_directory_string); + + let send_result = mullvad_problem_report::send_problem_report( + &user_email, + &user_message, + output_path, + resources_directory, + ); + + match send_result { + Ok(()) => JNI_TRUE, + Err(error) => { + log::error!( + "{}", + error.display_chain_with_msg("Failed to send problem report") + ); + JNI_FALSE + } + } +} |
