summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDavid Lönnhager <david.l@mullvad.net>2022-03-31 11:00:56 +0200
committerDavid Lönnhager <david.l@mullvad.net>2022-03-31 11:29:18 +0200
commit00fd04e646fe9c2ca5ec210c9f15cb773851d13e (patch)
tree806f0014ee8c563c4f39ddfae0ccdbc3a775c978
parentcbdbbd3800c0d442e7560b347dbe0d3366bf9b18 (diff)
downloadmullvadvpn-00fd04e646fe9c2ca5ec210c9f15cb773851d13e.tar.xz
mullvadvpn-00fd04e646fe9c2ca5ec210c9f15cb773851d13e.zip
Add update_device to Android interface
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt3
-rw-r--r--mullvad-jni/src/daemon_interface.rs10
-rw-r--r--mullvad-jni/src/lib.rs17
3 files changed, 30 insertions, 0 deletions
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt
index ea66d6b308..2aefe71a91 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt
@@ -128,6 +128,8 @@ class MullvadDaemon(vpnService: MullvadVpnService) {
fun getDevice(): DeviceConfig? = getDevice(daemonInterfaceAddress)
+ fun updateDevice() = updateDevice(daemonInterfaceAddress)
+
fun removeDevice(accountToken: String, deviceId: String): RemoveDeviceResult {
return removeDevice(daemonInterfaceAddress, accountToken, deviceId)
}
@@ -215,6 +217,7 @@ class MullvadDaemon(vpnService: MullvadVpnService) {
): List<Device>?
private external fun getDevice(daemonInterfaceAddress: Long): DeviceConfig?
+ private external fun updateDevice(daemonInterfaceAddress: Long)
private external fun removeDevice(
daemonInterfaceAddress: Long,
accountToken: String?,
diff --git a/mullvad-jni/src/daemon_interface.rs b/mullvad-jni/src/daemon_interface.rs
index 6b4b51f184..ae774ae8ee 100644
--- a/mullvad-jni/src/daemon_interface.rs
+++ b/mullvad-jni/src/daemon_interface.rs
@@ -222,6 +222,16 @@ impl DaemonInterface {
.map_err(Error::from)
}
+ pub fn update_device(&self) -> Result<()> {
+ let (tx, rx) = oneshot::channel();
+
+ self.send_command(DaemonCommand::UpdateDevice(tx))?;
+
+ block_on(rx)
+ .map_err(|_| Error::NoResponse)?
+ .map_err(Error::from)
+ }
+
pub fn list_devices(&self, account_token: String) -> Result<Vec<Device>> {
let (tx, rx) = oneshot::channel();
diff --git a/mullvad-jni/src/lib.rs b/mullvad-jni/src/lib.rs
index 3837e7d30f..938d73e033 100644
--- a/mullvad-jni/src/lib.rs
+++ b/mullvad-jni/src/lib.rs
@@ -828,6 +828,23 @@ pub extern "system" fn Java_net_mullvad_mullvadvpn_service_MullvadDaemon_getDevi
#[no_mangle]
#[allow(non_snake_case)]
+pub extern "system" fn Java_net_mullvad_mullvadvpn_service_MullvadDaemon_updateDevice(
+ _: JNIEnv<'_>,
+ _: JObject<'_>,
+ daemon_interface_address: jlong,
+) {
+ if let Some(daemon_interface) = get_daemon_interface(daemon_interface_address) {
+ if let Err(error) = daemon_interface.update_device() {
+ log::error!(
+ "{}",
+ error.display_chain_with_msg("Failed to update device")
+ );
+ }
+ }
+}
+
+#[no_mangle]
+#[allow(non_snake_case)]
pub extern "system" fn Java_net_mullvad_mullvadvpn_service_MullvadDaemon_listDevices<'env>(
env: JNIEnv<'env>,
_: JObject<'_>,