summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-11-21 20:55:19 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-11-22 15:16:54 +0000
commit61042d2f0d78da43cc6acbdd82c51e0db75b7443 (patch)
tree96a8f9fcb3584ffc95cce2476ee3ddd6b8b442fb
parent584391490fad9a33e18f8c71e48a1afc1a34ed1d (diff)
downloadmullvadvpn-61042d2f0d78da43cc6acbdd82c51e0db75b7443.tar.xz
mullvadvpn-61042d2f0d78da43cc6acbdd82c51e0db75b7443.zip
Derive `IntoJava` for `GeoIpLocation`
-rw-r--r--mullvad-jni/src/into_java.rs38
-rw-r--r--mullvad-types/src/location.rs8
2 files changed, 10 insertions, 36 deletions
diff --git a/mullvad-jni/src/into_java.rs b/mullvad-jni/src/into_java.rs
index cbd7cc1db4..14008e078a 100644
--- a/mullvad-jni/src/into_java.rs
+++ b/mullvad-jni/src/into_java.rs
@@ -17,10 +17,7 @@ use mullvad_types::{
wireguard::{KeygenEvent, PublicKey},
CustomTunnelEndpoint,
};
-use std::{
- fmt::Debug,
- net::{Ipv4Addr, Ipv6Addr},
-};
+use std::fmt::Debug;
use talpid_core::tunnel::tun_provider::TunConfig;
use talpid_types::{
net::TunnelEndpoint,
@@ -107,8 +104,6 @@ where
}
}
-wrap_jnix_into_java!(Ipv4Addr);
-wrap_jnix_into_java!(Ipv6Addr);
impl<'borrow, 'env> IntoJava<'borrow, 'env> for PublicKey
where
@@ -165,36 +160,7 @@ where
wrap_jnix_into_java!(AccountData);
wrap_jnix_into_java!(TunConfig);
wrap_jnix_into_java!(TunnelEndpoint);
-
-impl<'borrow, 'env> IntoJava<'borrow, 'env> for GeoIpLocation
-where
- 'env: 'borrow,
-{
- type JavaType = AutoLocal<'env, 'borrow>;
-
- fn into_java(self, env: &'borrow JnixEnv<'env>) -> Self::JavaType {
- let class = env.get_class("net/mullvad/mullvadvpn/model/GeoIpLocation");
- let ipv4 = self.ipv4.into_java(env);
- let ipv6 = self.ipv6.into_java(env);
- let country = self.country.into_java(env);
- let city = self.city.into_java(env);
- let hostname = self.hostname.into_java(env);
- let parameters = [
- JValue::Object(ipv4.as_obj()),
- JValue::Object(ipv6.as_obj()),
- JValue::Object(country.as_obj()),
- JValue::Object(city.as_obj()),
- JValue::Object(hostname.as_obj()),
- ];
-
- env.auto_local(env.new_object(
- &class,
- "(Ljava/net/InetAddress;Ljava/net/InetAddress;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V",
- &parameters,
- )
- .expect("Failed to create GeoIpLocation Java object"))
- }
-}
+wrap_jnix_into_java!(GeoIpLocation);
impl<'borrow, 'env> IntoJava<'borrow, 'env> for RelayList
where
diff --git a/mullvad-types/src/location.rs b/mullvad-types/src/location.rs
index fbb2c1a7ef..07a0c00795 100644
--- a/mullvad-types/src/location.rs
+++ b/mullvad-types/src/location.rs
@@ -1,3 +1,5 @@
+#[cfg(target_os = "android")]
+use jnix::IntoJava;
use serde::{Deserialize, Serialize};
use std::net::{IpAddr, Ipv4Addr, Ipv6Addr};
@@ -64,15 +66,21 @@ pub struct AmIMullvad {
/// GeoIP information exposed from the daemon to frontends.
#[derive(Debug, Clone, Serialize, Deserialize)]
+#[cfg_attr(target_os = "android", derive(IntoJava))]
+#[cfg_attr(target_os = "android", jnix(package = "net.mullvad.mullvadvpn.model"))]
pub struct GeoIpLocation {
pub ipv4: Option<Ipv4Addr>,
pub ipv6: Option<Ipv6Addr>,
pub country: String,
pub city: Option<String>,
+ #[cfg_attr(target_os = "android", jnix(skip))]
pub latitude: f64,
+ #[cfg_attr(target_os = "android", jnix(skip))]
pub longitude: f64,
+ #[cfg_attr(target_os = "android", jnix(skip))]
pub mullvad_exit_ip: bool,
pub hostname: Option<String>,
+ #[cfg_attr(target_os = "android", jnix(skip))]
pub bridge_hostname: Option<String>,
}