diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-11-22 01:21:37 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-11-22 15:16:55 +0000 |
| commit | 7f121575cef1418e9a9c2e13e928f6984d64272c (patch) | |
| tree | aa0409263a63819f2ad978989c6b524904088c3c | |
| parent | 54bcc7119720c11d1ad353aa2dd3cdc265e42055 (diff) | |
| download | mullvadvpn-7f121575cef1418e9a9c2e13e928f6984d64272c.tar.xz mullvadvpn-7f121575cef1418e9a9c2e13e928f6984d64272c.zip | |
Derive `IntoJava` for `KeygenEvent`
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/WireguardKeyFragment.kt | 9 | ||||
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/model/KeygenEvent.kt | 20 | ||||
| -rw-r--r-- | mullvad-jni/src/into_java.rs | 66 | ||||
| -rw-r--r-- | mullvad-types/src/wireguard.rs | 4 |
4 files changed, 25 insertions, 74 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/WireguardKeyFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/WireguardKeyFragment.kt index e51e43630f..141e373ccf 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/WireguardKeyFragment.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/WireguardKeyFragment.kt @@ -152,16 +152,15 @@ class WireguardKeyFragment : Fragment() { publicKeyAge.setText(formatKeyDateCreated(key.dateCreated)) - if (keyState.verified != null) { - if (keyState.verified) { + keyState.verified?.let { verified -> + if (verified) { setStatusMessage(R.string.wireguard_key_valid, R.color.green) } else { setStatusMessage(R.string.wireguard_key_invalid, R.color.red) } } - if (keyState.replacementFailure != null) { - showKeygenFailure(keyState.replacementFailure) - } + + keyState.replacementFailure?.let { error -> showKeygenFailure(error) } } is KeygenEvent.Failure -> { showKeygenFailure(keyState.failure) diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/model/KeygenEvent.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/model/KeygenEvent.kt index f2f85453f9..0e1e801895 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/model/KeygenEvent.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/model/KeygenEvent.kt @@ -1,11 +1,21 @@ package net.mullvad.mullvadvpn.model sealed class KeygenEvent { - class NewKey( - val publicKey: PublicKey, - val verified: Boolean?, - val replacementFailure: KeygenFailure? - ) : KeygenEvent() + class NewKey(val publicKey: PublicKey) : KeygenEvent() { + var verified: Boolean? = false + private set + var replacementFailure: KeygenFailure? = null + private set + + constructor( + publicKey: PublicKey, + verified: Boolean?, + replacementFailure: KeygenFailure? + ) : this(publicKey) { + this.verified = verified + this.replacementFailure = replacementFailure + } + } class Failure(val failure: KeygenFailure) : KeygenEvent() } diff --git a/mullvad-jni/src/into_java.rs b/mullvad-jni/src/into_java.rs index 5b7321ce68..5059fc8744 100644 --- a/mullvad-jni/src/into_java.rs +++ b/mullvad-jni/src/into_java.rs @@ -1,6 +1,6 @@ use crate::daemon_interface; use jnix::{ - jni::objects::{AutoLocal, JObject, JValue}, + jni::objects::{AutoLocal, JValue}, JnixEnv, }; use mullvad_types::{ @@ -10,7 +10,7 @@ use mullvad_types::{ settings::Settings, states::TunnelState, version::AppVersionInfo, - wireguard::{KeygenEvent, PublicKey}, + wireguard::KeygenEvent, }; use std::fmt::Debug; use talpid_core::tunnel::tun_provider::TunConfig; @@ -62,7 +62,6 @@ where } } -wrap_jnix_into_java!(PublicKey); wrap_jnix_into_java!(AppVersionInfo); wrap_jnix_into_java!(AccountData); wrap_jnix_into_java!(TunConfig); @@ -75,66 +74,7 @@ wrap_jnix_into_java!(Constraint<T> ); wrap_jnix_into_java!(RelaySettings); - -impl<'borrow, 'env> IntoJava<'borrow, 'env> for KeygenEvent -where - 'env: 'borrow, -{ - type JavaType = AutoLocal<'env, 'borrow>; - - fn into_java(self, env: &'borrow JnixEnv<'env>) -> Self::JavaType { - env.auto_local(match self { - KeygenEvent::NewKey(public_key) => { - let class = env.get_class("net/mullvad/mullvadvpn/model/KeygenEvent$NewKey"); - let java_public_key = public_key.into_java(env); - - let parameters = [ - JValue::Object(java_public_key.as_obj()), - JValue::Object(JObject::null()), - JValue::Object(JObject::null()), - ]; - - env.new_object( - &class, - "(Lnet/mullvad/mullvadvpn/model/PublicKey;Ljava/lang/Boolean;Lnet/mullvad/mullvadvpn/model/KeygenFailure;)V", - ¶meters, - ) - .expect("Failed to create KeygenEvent.NewKey Java object") - } - KeygenEvent::TooManyKeys => { - let failure_class = - env.get_class("net/mullvad/mullvadvpn/model/KeygenFailure$TooManyKeys"); - - let failure = env - .new_object(&failure_class, "()V", &[]) - .expect("Failed to create KeygenFailure.TooManyKeys Java object"); - - let class = env.get_class("net/mullvad/mullvadvpn/model/KeygenEvent$Failure"); - env.new_object( - &class, - "(Lnet/mullvad/mullvadvpn/model/KeygenFailure;)V", - &[JValue::Object(failure)], - ) - .expect("Failed to create KeygenEvent.Failure Java object") - } - KeygenEvent::GenerationFailure => { - let failure_class = - env.get_class("net/mullvad/mullvadvpn/model/KeygenFailure$GenerationFailure"); - let failure = env - .new_object(&failure_class, "()V", &[]) - .expect("Failed to create KeygenFailure.GenerationFailure Java object"); - - let class = env.get_class("net/mullvad/mullvadvpn/model/KeygenEvent$Failure"); - env.new_object( - &class, - "(Lnet/mullvad/mullvadvpn/model/KeygenFailure;)V", - &[JValue::Object(failure)], - ) - .expect("Failed to create KeygenEvent.GenerationFailure Java object") - } - }) - } -} +wrap_jnix_into_java!(KeygenEvent); impl<'borrow, 'env> IntoJava<'borrow, 'env> for RelayConstraints where diff --git a/mullvad-types/src/wireguard.rs b/mullvad-types/src/wireguard.rs index c0064b4589..dce0fb74de 100644 --- a/mullvad-types/src/wireguard.rs +++ b/mullvad-types/src/wireguard.rs @@ -43,9 +43,11 @@ pub struct AssociatedAddresses { pub ipv6_address: ipnetwork::Ipv6Network, } +/// Event that is emitted when the daemon has finished generating a key. #[serde(rename_all = "snake_case")] #[derive(Clone, Debug, Deserialize, Serialize)] -/// Event that is emitted when the daemon has finished generating a key. +#[cfg_attr(target_os = "android", derive(IntoJava))] +#[cfg_attr(target_os = "android", jnix(package = "net.mullvad.mullvadvpn.model"))] pub enum KeygenEvent { NewKey(PublicKey), TooManyKeys, |
