summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-02-27 09:36:14 -0300
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-02-27 09:36:14 -0300
commit04c18f26297332b529b919ff19170605ff96cbdc (patch)
tree060bb68cd4762f5e1c3447668199488d8c75cf60 /android/src
parent7d69d3bd423a4dc6b71f972040bd1c7830b1b9c3 (diff)
parentc06a69a1aca88adbd6d9f63c059222c000c35161 (diff)
downloadmullvadvpn-04c18f26297332b529b919ff19170605ff96cbdc.tar.xz
mullvadvpn-04c18f26297332b529b919ff19170605ff96cbdc.zip
Merge branch 'android-non-blocking-error-state'
Diffstat (limited to 'android/src')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/ForegroundNotificationManager.kt11
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConnectActionButton.kt24
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConnectionStatus.kt7
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/NotificationBanner.kt12
-rw-r--r--android/src/main/res/values/strings.xml10
5 files changed, 45 insertions, 19 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/ForegroundNotificationManager.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/ForegroundNotificationManager.kt
index b352db1fce..4fb1557d8c 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/ForegroundNotificationManager.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/ForegroundNotificationManager.kt
@@ -103,8 +103,7 @@ class ForegroundNotificationManager(
if (state.errorState.isBlocking) {
R.string.blocking_all_connections
} else {
- // TODO Revise use of message when the app fails to block traffic
- R.string.unsecured
+ R.string.critical_error
}
}
}
@@ -124,7 +123,13 @@ class ForegroundNotificationManager(
else -> R.string.connect
}
}
- is TunnelState.Error -> R.string.disconnect
+ is TunnelState.Error -> {
+ if (state.errorState.isBlocking) {
+ R.string.disconnect
+ } else {
+ R.string.dismiss
+ }
+ }
}
}
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConnectActionButton.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConnectActionButton.kt
index dc427a5ac5..5e1d50887b 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConnectActionButton.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConnectActionButton.kt
@@ -46,7 +46,13 @@ class ConnectActionButton(val parentView: View) {
}
is TunnelState.Connecting -> connecting()
is TunnelState.Connected -> connected()
- is TunnelState.Error -> connected()
+ is TunnelState.Error -> {
+ if (value.errorState.isBlocking) {
+ connected()
+ } else {
+ blockError()
+ }
+ }
}
field = value
@@ -74,12 +80,20 @@ class ConnectActionButton(val parentView: View) {
}
private fun action() {
- when (tunnelState) {
+ val state = tunnelState
+
+ when (state) {
is TunnelState.Disconnected -> onConnect?.invoke()
is TunnelState.Disconnecting -> onConnect?.invoke()
is TunnelState.Connecting -> onCancel?.invoke()
is TunnelState.Connected -> onDisconnect?.invoke()
- is TunnelState.Error -> onDisconnect?.invoke()
+ is TunnelState.Error -> {
+ if (state.errorState.isBlocking) {
+ onDisconnect?.invoke()
+ } else {
+ onCancel?.invoke()
+ }
+ }
}
}
@@ -97,6 +111,10 @@ class ConnectActionButton(val parentView: View) {
redButton(R.string.disconnect)
}
+ private fun blockError() {
+ redButton(R.string.dismiss)
+ }
+
private fun redButton(text: Int) {
mainButton.background = leftRedBackground
mainButton.setText(text)
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConnectionStatus.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConnectionStatus.kt
index c60e9ea1bb..c06746d3fc 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConnectionStatus.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConnectionStatus.kt
@@ -55,13 +55,12 @@ class ConnectionStatus(val parentView: View, val resources: Resources) {
private fun errorState(isBlocking: Boolean) {
spinner.visibility = View.GONE
- // TODO: revise how to best inform the user about us not blocking
- // traffic
- text.setTextColor(securedTextColor)
if (isBlocking) {
+ text.setTextColor(securedTextColor)
text.setText(R.string.blocked_connection)
} else {
- text.setText(R.string.blocked_connection)
+ text.setTextColor(unsecuredTextColor)
+ text.setText(R.string.error_state)
}
}
}
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/NotificationBanner.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/NotificationBanner.kt
index 3214248f3d..83cc14b738 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/NotificationBanner.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/NotificationBanner.kt
@@ -196,13 +196,11 @@ class NotificationBanner(
}
// if the error state is null, we can assume that we are secure
- val blockMessage = if (errorState?.isBlocking ?: true) {
- R.string.blocking_internet
- } else {
- R.string.not_blocking_internet
- }
-
- showError(blockMessage, messageText)
+ if (errorState?.isBlocking ?: true) {
+ showError(R.string.blocking_internet, messageText)
+ } else {
+ showError(R.string.not_blocking_internet, R.string.failed_to_block_internet)
+ }
}
private fun showError(titleText: Int, messageText: Int?) {
diff --git a/android/src/main/res/values/strings.xml b/android/src/main/res/values/strings.xml
index f34ef41a9b..93fc45ad30 100644
--- a/android/src/main/res/values/strings.xml
+++ b/android/src/main/res/values/strings.xml
@@ -5,6 +5,8 @@
<string name="disconnecting">Disconnecting</string>
<string name="secured">Secured</string>
<string name="unsecured">Unsecured</string>
+ <string name="critical_error">Critical error (your attention is
+ required)</string>
<string name="blocking_all_connections">Blocking all
connections</string>
<string name="foreground_notification_channel_name">VPN tunnel
@@ -89,6 +91,7 @@
<string name="connect">Secure my connection</string>
<string name="cancel">Cancel</string>
<string name="disconnect">Disconnect</string>
+ <string name="dismiss">Dismiss</string>
<string name="switch_location">Switch location</string>
<string name="wireguard">WireGuard</string>
<string name="tcp">TCP</string>
@@ -96,8 +99,11 @@
<string name="in_address">In %1$s:%2$d %3$s</string>
<string name="out_address">Out %1$s</string>
<string name="blocking_internet">Blocking internet</string>
- <string name="not_blocking_internet">Failed to block
- internet</string>
+ <string name="not_blocking_internet">You might be leaking
+ network traffic</string>
+ <string name="failed_to_block_internet">Failed to block all
+ network traffic. Please troubleshoot or report the problem to
+ us.</string>
<string name="auth_failed">Account authentication
failed.</string>
<string name="ipv6_unavailable">Could not configure