summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-06-27 00:08:09 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-07-01 15:01:27 +0000
commitc7e7b7a399aec8a04f262a76306d49d14ba13a57 (patch)
tree35e0f9910deb266567fc39998b6af7110572f278
parent6261362f90a9b62c890acce8f4db4fed1a69db58 (diff)
downloadmullvadvpn-c7e7b7a399aec8a04f262a76306d49d14ba13a57.tar.xz
mullvadvpn-c7e7b7a399aec8a04f262a76306d49d14ba13a57.zip
Include relay location in `TunnelState` data class
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/ConnectionProxy.kt2
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/model/TunnelState.kt4
-rw-r--r--mullvad-jni/src/into_java.rs25
3 files changed, 20 insertions, 11 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/ConnectionProxy.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/ConnectionProxy.kt
index 8922344de5..8782493b4c 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/ConnectionProxy.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/ConnectionProxy.kt
@@ -36,7 +36,7 @@ class ConnectionProxy(val parentActivity: MainActivity) {
var onUiStateChange: ((TunnelState) -> Unit)? = null
fun connect() {
- uiState = TunnelState.Connecting()
+ uiState = TunnelState.Connecting(null)
cancelActiveAction()
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/model/TunnelState.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/model/TunnelState.kt
index 006de053c8..2551cfe978 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/model/TunnelState.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/model/TunnelState.kt
@@ -2,8 +2,8 @@ package net.mullvad.mullvadvpn.model
sealed class TunnelState() {
class Disconnected() : TunnelState()
- class Connecting() : TunnelState()
- class Connected() : TunnelState()
+ class Connecting(val location: GeoIpLocation?) : TunnelState()
+ class Connected(val location: GeoIpLocation) : TunnelState()
class Disconnecting() : TunnelState()
class Blocked() : TunnelState()
}
diff --git a/mullvad-jni/src/into_java.rs b/mullvad-jni/src/into_java.rs
index 204f023ec0..bb29c20bc9 100644
--- a/mullvad-jni/src/into_java.rs
+++ b/mullvad-jni/src/into_java.rs
@@ -465,12 +465,12 @@ impl<'env> IntoJava<'env> for TunnelState {
type JavaType = JObject<'env>;
fn into_java(self, env: &JNIEnv<'env>) -> Self::JavaType {
- let variant = match self {
- TunnelState::Disconnected => "Disconnected",
- TunnelState::Connecting { .. } => "Connecting",
- TunnelState::Connected { .. } => "Connected",
- TunnelState::Disconnecting(_) => "Disconnecting",
- TunnelState::Blocked(_) => "Blocked",
+ let (variant, location) = match self {
+ TunnelState::Disconnected => ("Disconnected", None),
+ TunnelState::Connecting { location, .. } => ("Connecting", Some(location)),
+ TunnelState::Connected { location, .. } => ("Connected", Some(location)),
+ TunnelState::Disconnecting(_) => ("Disconnecting", None),
+ TunnelState::Blocked(_) => ("Blocked", None),
};
let class = get_class(&format!(
@@ -478,7 +478,16 @@ impl<'env> IntoJava<'env> for TunnelState {
variant
));
- env.new_object(&class, "()V", &[])
- .expect("Failed to create TunnelState sub-class variant Java object")
+ match location {
+ Some(location) => {
+ let location = env.auto_local(location.into_java(env));
+ let parameters = [JValue::Object(location.as_obj())];
+ let signature = "(Lnet/mullvad/mullvadvpn/model/GeoIpLocation;)V";
+
+ env.new_object(&class, signature, &parameters)
+ }
+ None => env.new_object(&class, "()V", &[]),
+ }
+ .expect("Failed to create TunnelState sub-class variant Java object")
}
}