summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--mullvad-jni/src/into_java.rs22
-rw-r--r--mullvad-jni/src/lib.rs3
2 files changed, 24 insertions, 1 deletions
diff --git a/mullvad-jni/src/into_java.rs b/mullvad-jni/src/into_java.rs
index fc899bf12e..c111767e63 100644
--- a/mullvad-jni/src/into_java.rs
+++ b/mullvad-jni/src/into_java.rs
@@ -18,7 +18,7 @@ use mullvad_types::{
};
use std::{fmt::Debug, net::IpAddr};
use talpid_core::tunnel::tun_provider::TunConfig;
-use talpid_types::net::wireguard::PublicKey;
+use talpid_types::{net::wireguard::PublicKey, tunnel::ActionAfterDisconnect};
pub trait IntoJava<'env> {
type JavaType;
@@ -495,6 +495,26 @@ impl<'env> IntoJava<'env> for Settings {
}
}
+impl<'env> IntoJava<'env> for ActionAfterDisconnect {
+ type JavaType = JObject<'env>;
+
+ fn into_java(self, env: &JNIEnv<'env>) -> Self::JavaType {
+ let variant = match self {
+ ActionAfterDisconnect::Nothing => "Nothing",
+ ActionAfterDisconnect::Block => "Block",
+ ActionAfterDisconnect::Reconnect => "Reconnect",
+ };
+ let class_name = format!(
+ "net/mullvad/mullvadvpn/model/ActionAfterDisconnect${}",
+ variant
+ );
+ let class = get_class(&class_name);
+
+ env.new_object(&class, "()V", &[])
+ .expect("Failed to create ActionAfterDisconnect sub-class variant Java object")
+ }
+}
+
impl<'env> IntoJava<'env> for TunnelState {
type JavaType = JObject<'env>;
diff --git a/mullvad-jni/src/lib.rs b/mullvad-jni/src/lib.rs
index dfc55010ac..309232774e 100644
--- a/mullvad-jni/src/lib.rs
+++ b/mullvad-jni/src/lib.rs
@@ -35,6 +35,9 @@ const CLASSES_TO_LOAD: &[&str] = &[
"java/util/ArrayList",
"java/util/List",
"net/mullvad/mullvadvpn/model/AccountData",
+ "net/mullvad/mullvadvpn/model/ActionAfterDisconnect$Block",
+ "net/mullvad/mullvadvpn/model/ActionAfterDisconnect$Nothing",
+ "net/mullvad/mullvadvpn/model/ActionAfterDisconnect$Reconnect",
"net/mullvad/mullvadvpn/model/Constraint$Any",
"net/mullvad/mullvadvpn/model/Constraint$Only",
"net/mullvad/mullvadvpn/model/GeoIpLocation",