summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
Diffstat (limited to 'android')
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/model/CustomDnsOptions.kt10
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/model/DefaultDnsOptions.kt13
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/model/DnsOptions.kt7
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/model/DnsState.kt6
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/CustomDns.kt14
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/CustomDns.kt5
6 files changed, 47 insertions, 8 deletions
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/model/CustomDnsOptions.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/model/CustomDnsOptions.kt
new file mode 100644
index 0000000000..e9e8311c26
--- /dev/null
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/model/CustomDnsOptions.kt
@@ -0,0 +1,10 @@
+package net.mullvad.mullvadvpn.model
+
+import android.os.Parcelable
+import java.net.InetAddress
+import kotlinx.parcelize.Parcelize
+
+@Parcelize
+data class CustomDnsOptions(
+ val addresses: ArrayList<InetAddress>
+) : Parcelable
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/model/DefaultDnsOptions.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/model/DefaultDnsOptions.kt
new file mode 100644
index 0000000000..6b24f363cc
--- /dev/null
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/model/DefaultDnsOptions.kt
@@ -0,0 +1,13 @@
+package net.mullvad.mullvadvpn.model
+
+import android.os.Parcelable
+import kotlinx.parcelize.Parcelize
+
+@Parcelize
+data class DefaultDnsOptions(
+ val blockAds: Boolean = false,
+ val blockTrackers: Boolean = false,
+ val blockMalware: Boolean = false,
+ val blockAdultContent: Boolean = false,
+ val blockGambling: Boolean = false,
+) : Parcelable
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/model/DnsOptions.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/model/DnsOptions.kt
index c94075cc8b..1ce3acc095 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/model/DnsOptions.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/model/DnsOptions.kt
@@ -1,8 +1,11 @@
package net.mullvad.mullvadvpn.model
import android.os.Parcelable
-import java.net.InetAddress
import kotlinx.parcelize.Parcelize
@Parcelize
-data class DnsOptions(val custom: Boolean, val addresses: ArrayList<InetAddress>) : Parcelable
+data class DnsOptions(
+ val state: DnsState,
+ val defaultOptions: DefaultDnsOptions,
+ val customOptions: CustomDnsOptions
+) : Parcelable
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/model/DnsState.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/model/DnsState.kt
new file mode 100644
index 0000000000..9c8677ba7d
--- /dev/null
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/model/DnsState.kt
@@ -0,0 +1,6 @@
+package net.mullvad.mullvadvpn.model
+
+enum class DnsState {
+ Default,
+ Custom
+}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/CustomDns.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/CustomDns.kt
index b708e1b290..b2ae560450 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/CustomDns.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/CustomDns.kt
@@ -8,7 +8,10 @@ import kotlinx.coroutines.channels.ClosedReceiveChannelException
import kotlinx.coroutines.channels.actor
import kotlinx.coroutines.channels.trySendBlocking
import net.mullvad.mullvadvpn.ipc.Request
+import net.mullvad.mullvadvpn.model.CustomDnsOptions
+import net.mullvad.mullvadvpn.model.DefaultDnsOptions
import net.mullvad.mullvadvpn.model.DnsOptions
+import net.mullvad.mullvadvpn.model.DnsState
class CustomDns(private val endpoint: ServiceEndpoint) {
private sealed class Command {
@@ -29,9 +32,9 @@ class CustomDns(private val endpoint: ServiceEndpoint) {
init {
endpoint.settingsListener.dnsOptionsNotifier.subscribe(this) { maybeDnsOptions ->
maybeDnsOptions?.let { dnsOptions ->
- enabled = dnsOptions.custom
+ enabled = dnsOptions.state == DnsState.Custom
dnsServers.clear()
- dnsServers.addAll(dnsOptions.addresses)
+ dnsServers.addAll(dnsOptions.customOptions.addresses)
}
}
@@ -106,8 +109,11 @@ class CustomDns(private val endpoint: ServiceEndpoint) {
}
private suspend fun changeDnsOptions(enable: Boolean) {
- val options = DnsOptions(enable, dnsServers)
-
+ val options = DnsOptions(
+ state = if (enable) DnsState.Custom else DnsState.Default,
+ customOptions = CustomDnsOptions(dnsServers),
+ defaultOptions = DefaultDnsOptions()
+ )
daemon.await().setDnsOptions(options)
}
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/CustomDns.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/CustomDns.kt
index 2675c1231a..8bfc53f226 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/CustomDns.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/CustomDns.kt
@@ -3,6 +3,7 @@ package net.mullvad.mullvadvpn.ui.serviceconnection
import android.os.Messenger
import java.net.InetAddress
import net.mullvad.mullvadvpn.ipc.Request
+import net.mullvad.mullvadvpn.model.DnsState
import net.mullvad.talpid.util.EventNotifier
class CustomDns(private val connection: Messenger, private val settingsListener: SettingsListener) {
@@ -13,8 +14,8 @@ class CustomDns(private val connection: Messenger, private val settingsListener:
settingsListener.dnsOptionsNotifier.subscribe(this) { maybeDnsOptions ->
maybeDnsOptions?.let { dnsOptions ->
synchronized(this) {
- onEnabledChanged.notifyIfChanged(dnsOptions.custom)
- onDnsServersChanged.notifyIfChanged(dnsOptions.addresses)
+ onEnabledChanged.notifyIfChanged(dnsOptions.state == DnsState.Custom)
+ onDnsServersChanged.notifyIfChanged(dnsOptions.customOptions.addresses)
}
}
}