diff options
| author | Albin <albin@mullvad.net> | 2022-12-21 11:54:07 +0100 |
|---|---|---|
| committer | Albin <albin@mullvad.net> | 2022-12-21 15:23:17 +0100 |
| commit | 00f595ffe44abdfa548814ae996e6257d15eefe9 (patch) | |
| tree | b815fa07929113599a3616d937fc77bd281b6867 /android/app | |
| parent | ab6a6b0eb305189fd5ce1a493aa103f549540cd5 (diff) | |
| download | mullvadvpn-00f595ffe44abdfa548814ae996e6257d15eefe9.tar.xz mullvadvpn-00f595ffe44abdfa548814ae996e6257d15eefe9.zip | |
Unify Android DNS options with desktop
Unifyies the Android DNS options with the desktop DNS options
so that the Android<->Daemon FFI gets support for content blockers.
This UI for content blockers will be implemented in a separate commit.
Diffstat (limited to 'android/app')
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) } } } |
