summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-11-22 01:21:37 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-11-22 15:16:55 +0000
commit7f121575cef1418e9a9c2e13e928f6984d64272c (patch)
treeaa0409263a63819f2ad978989c6b524904088c3c
parent54bcc7119720c11d1ad353aa2dd3cdc265e42055 (diff)
downloadmullvadvpn-7f121575cef1418e9a9c2e13e928f6984d64272c.tar.xz
mullvadvpn-7f121575cef1418e9a9c2e13e928f6984d64272c.zip
Derive `IntoJava` for `KeygenEvent`
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/WireguardKeyFragment.kt9
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/model/KeygenEvent.kt20
-rw-r--r--mullvad-jni/src/into_java.rs66
-rw-r--r--mullvad-types/src/wireguard.rs4
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",
- &parameters,
- )
- .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,