diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-11-21 20:55:19 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-11-22 15:16:54 +0000 |
| commit | 61042d2f0d78da43cc6acbdd82c51e0db75b7443 (patch) | |
| tree | 96a8f9fcb3584ffc95cce2476ee3ddd6b8b442fb | |
| parent | 584391490fad9a33e18f8c71e48a1afc1a34ed1d (diff) | |
| download | mullvadvpn-61042d2f0d78da43cc6acbdd82c51e0db75b7443.tar.xz mullvadvpn-61042d2f0d78da43cc6acbdd82c51e0db75b7443.zip | |
Derive `IntoJava` for `GeoIpLocation`
| -rw-r--r-- | mullvad-jni/src/into_java.rs | 38 | ||||
| -rw-r--r-- | mullvad-types/src/location.rs | 8 |
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", - ¶meters, - ) - .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>, } |
