summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt5
-rw-r--r--mullvad-jni/src/daemon_interface.rs8
-rw-r--r--mullvad-jni/src/lib.rs25
3 files changed, 38 insertions, 0 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt
index e61567a0fe..a0dabf1a53 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt
@@ -45,6 +45,10 @@ class MullvadDaemon(val vpnService: MullvadVpnService) {
return getAccountData(daemonInterfaceAddress, accountToken)
}
+ fun getAccountHistory(): ArrayList<String> {
+ return getAccountHistory(daemonInterfaceAddress)
+ }
+
fun getWwwAuthToken(): String {
return getWwwAuthToken(daemonInterfaceAddress)
}
@@ -107,6 +111,7 @@ class MullvadDaemon(val vpnService: MullvadVpnService) {
daemonInterfaceAddress: Long,
accountToken: String
): GetAccountDataResult
+ private external fun getAccountHistory(daemonInterfaceAddress: Long): ArrayList<String>
private external fun getWwwAuthToken(daemonInterfaceAddress: Long): String
private external fun getCurrentLocation(daemonInterfaceAddress: Long): GeoIpLocation?
private external fun getCurrentVersion(daemonInterfaceAddress: Long): String
diff --git a/mullvad-jni/src/daemon_interface.rs b/mullvad-jni/src/daemon_interface.rs
index 7071dee363..5515668e08 100644
--- a/mullvad-jni/src/daemon_interface.rs
+++ b/mullvad-jni/src/daemon_interface.rs
@@ -86,6 +86,14 @@ impl DaemonInterface {
.map_err(Error::RpcError)
}
+ pub fn get_account_history(&self) -> Result<Vec<String>> {
+ let (tx, rx) = oneshot::channel();
+
+ self.send_command(ManagementCommand::GetAccountHistory(tx))?;
+
+ rx.wait().map_err(|_| Error::NoResponse)
+ }
+
pub fn get_www_auth_token(&self) -> Result<String> {
let (tx, rx) = oneshot::channel();
diff --git a/mullvad-jni/src/lib.rs b/mullvad-jni/src/lib.rs
index 7e6dd7f99f..d6be15962c 100644
--- a/mullvad-jni/src/lib.rs
+++ b/mullvad-jni/src/lib.rs
@@ -408,6 +408,31 @@ pub extern "system" fn Java_net_mullvad_mullvadvpn_service_MullvadDaemon_verifyW
#[no_mangle]
#[allow(non_snake_case)]
+pub extern "system" fn Java_net_mullvad_mullvadvpn_service_MullvadDaemon_getAccountHistory<'env>(
+ env: JNIEnv<'env>,
+ _: JObject<'_>,
+ daemon_interface_address: jlong,
+) -> JObject<'env> {
+ let env = JnixEnv::from(env);
+
+ match get_daemon_interface(daemon_interface_address) {
+ Some(daemon_interface) => daemon_interface
+ .get_account_history()
+ .map(|history| history.into_java(&env).forget())
+ .unwrap_or_else(|err| {
+ log::error!(
+ "{}",
+ err.display_chain_with_msg("Failed to get account history")
+ );
+ JObject::null()
+ }),
+ None => JObject::null(),
+ }
+}
+
+
+#[no_mangle]
+#[allow(non_snake_case)]
pub extern "system" fn Java_net_mullvad_mullvadvpn_service_MullvadDaemon_getAccountData<'env>(
env: JNIEnv<'env>,
_: JObject<'_>,