Skip to content

Commit 487993e

Browse files
committed
Rename selected obfuscation and fix tests
1 parent 308fb3d commit 487993e

File tree

15 files changed

+88
-87
lines changed

15 files changed

+88
-87
lines changed

android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreenTest.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,7 @@ class VpnSettingsScreenTest {
316316
VpnSettingsScreen(
317317
state =
318318
VpnSettingsUiState.createDefault(
319-
customWireguardPort = Constraint.Only(Port(4000))
319+
customWireguardPort = Port(4000)
320320
)
321321
)
322322
}
@@ -339,7 +339,7 @@ class VpnSettingsScreenTest {
339339
state =
340340
VpnSettingsUiState.createDefault(
341341
selectedWireguardPort = Constraint.Only(Port(4000)),
342-
customWireguardPort = Constraint.Only(Port(4000)),
342+
customWireguardPort = Port(4000),
343343
),
344344
onWireguardPortSelected = onWireguardPortSelected,
345345
)

android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/SelectObfuscationCell.kt android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/ObfuscationModeCell.kt

+15-15
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ import androidx.compose.ui.tooling.preview.PreviewParameter
2121
import net.mullvad.mullvadvpn.R
2222
import net.mullvad.mullvadvpn.compose.preview.SelectObfuscationCellPreviewParameterProvider
2323
import net.mullvad.mullvadvpn.lib.model.Constraint
24+
import net.mullvad.mullvadvpn.lib.model.ObfuscationMode
2425
import net.mullvad.mullvadvpn.lib.model.Port
25-
import net.mullvad.mullvadvpn.lib.model.SelectedObfuscation
2626
import net.mullvad.mullvadvpn.lib.theme.AppTheme
2727
import net.mullvad.mullvadvpn.lib.theme.Dimens
2828
import net.mullvad.mullvadvpn.lib.theme.color.selected
@@ -31,13 +31,13 @@ import net.mullvad.mullvadvpn.lib.theme.typeface.listItemText
3131

3232
@Preview
3333
@Composable
34-
private fun PreviewSelectObfuscationCellCell(
34+
private fun PreviewObfuscationCell(
3535
@PreviewParameter(SelectObfuscationCellPreviewParameterProvider::class)
36-
selectedObfuscationCellData: Triple<SelectedObfuscation, Constraint<Port>, Boolean>
36+
selectedObfuscationCellData: Triple<ObfuscationMode, Constraint<Port>, Boolean>
3737
) {
3838
AppTheme {
39-
SelectObfuscationCell(
40-
selectedObfuscation = selectedObfuscationCellData.first,
39+
ObfuscationModeCell(
40+
obfuscationMode = selectedObfuscationCellData.first,
4141
port = selectedObfuscationCellData.second,
4242
isSelected = selectedObfuscationCellData.third,
4343
onSelected = {},
@@ -47,11 +47,11 @@ private fun PreviewSelectObfuscationCellCell(
4747
}
4848

4949
@Composable
50-
fun SelectObfuscationCell(
51-
selectedObfuscation: SelectedObfuscation,
50+
fun ObfuscationModeCell(
51+
obfuscationMode: ObfuscationMode,
5252
port: Constraint<Port>,
5353
isSelected: Boolean,
54-
onSelected: (SelectedObfuscation) -> Unit,
54+
onSelected: (ObfuscationMode) -> Unit,
5555
onNavigate: () -> Unit = {},
5656
) {
5757
Row(
@@ -66,9 +66,9 @@ fun SelectObfuscationCell(
6666
titleColor = MaterialTheme.colorScheme.onSurface,
6767
subtitleStyle = MaterialTheme.typography.listItemSubText,
6868
subtitleColor = MaterialTheme.colorScheme.onSurface,
69-
titleText = selectedObfuscation.toTitle(),
69+
titleText = obfuscationMode.toTitle(),
7070
subtitleText = stringResource(id = R.string.port_x, port.toSubTitle()),
71-
onCellClicked = { onSelected(selectedObfuscation) },
71+
onCellClicked = { onSelected(obfuscationMode) },
7272
minHeight = Dimens.cellHeight,
7373
background =
7474
if (isSelected) {
@@ -101,12 +101,12 @@ fun SelectObfuscationCell(
101101
}
102102

103103
@Composable
104-
private fun SelectedObfuscation.toTitle() =
104+
private fun ObfuscationMode.toTitle() =
105105
when (this) {
106-
SelectedObfuscation.Auto -> stringResource(id = R.string.automatic)
107-
SelectedObfuscation.Off -> stringResource(id = R.string.off)
108-
SelectedObfuscation.Udp2Tcp -> stringResource(id = R.string.upd_over_tcp)
109-
SelectedObfuscation.Shadowsocks -> stringResource(id = R.string.shadowsocks)
106+
ObfuscationMode.Auto -> stringResource(id = R.string.automatic)
107+
ObfuscationMode.Off -> stringResource(id = R.string.off)
108+
ObfuscationMode.Udp2Tcp -> stringResource(id = R.string.upd_over_tcp)
109+
ObfuscationMode.Shadowsocks -> stringResource(id = R.string.shadowsocks)
110110
}
111111

112112
@Composable

android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/preview/SelectObfuscationCellPreviewParameterProvider.kt

+11-11
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,21 @@ package net.mullvad.mullvadvpn.compose.preview
22

33
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
44
import net.mullvad.mullvadvpn.lib.model.Constraint
5+
import net.mullvad.mullvadvpn.lib.model.ObfuscationMode
56
import net.mullvad.mullvadvpn.lib.model.Port
6-
import net.mullvad.mullvadvpn.lib.model.SelectedObfuscation
77

88
class SelectObfuscationCellPreviewParameterProvider :
9-
PreviewParameterProvider<Triple<SelectedObfuscation, Constraint<Port>, Boolean>> {
10-
override val values: Sequence<Triple<SelectedObfuscation, Constraint<Port>, Boolean>> =
9+
PreviewParameterProvider<Triple<ObfuscationMode, Constraint<Port>, Boolean>> {
10+
override val values: Sequence<Triple<ObfuscationMode, Constraint<Port>, Boolean>> =
1111
sequenceOf(
12-
Triple(SelectedObfuscation.Shadowsocks, Constraint.Any, false),
13-
Triple(SelectedObfuscation.Shadowsocks, Constraint.Any, true),
14-
Triple(SelectedObfuscation.Shadowsocks, Constraint.Only(Port(PORT)), false),
15-
Triple(SelectedObfuscation.Shadowsocks, Constraint.Only(Port(PORT)), true),
16-
Triple(SelectedObfuscation.Udp2Tcp, Constraint.Any, false),
17-
Triple(SelectedObfuscation.Udp2Tcp, Constraint.Any, true),
18-
Triple(SelectedObfuscation.Udp2Tcp, Constraint.Only(Port(PORT)), false),
19-
Triple(SelectedObfuscation.Udp2Tcp, Constraint.Only(Port(PORT)), true),
12+
Triple(ObfuscationMode.Shadowsocks, Constraint.Any, false),
13+
Triple(ObfuscationMode.Shadowsocks, Constraint.Any, true),
14+
Triple(ObfuscationMode.Shadowsocks, Constraint.Only(Port(PORT)), false),
15+
Triple(ObfuscationMode.Shadowsocks, Constraint.Only(Port(PORT)), true),
16+
Triple(ObfuscationMode.Udp2Tcp, Constraint.Any, false),
17+
Triple(ObfuscationMode.Udp2Tcp, Constraint.Any, true),
18+
Triple(ObfuscationMode.Udp2Tcp, Constraint.Only(Port(PORT)), false),
19+
Triple(ObfuscationMode.Udp2Tcp, Constraint.Only(Port(PORT)), true),
2020
)
2121
}
2222

android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreen.kt

+17-17
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ import net.mullvad.mullvadvpn.compose.cell.MtuComposeCell
6363
import net.mullvad.mullvadvpn.compose.cell.MtuSubtitle
6464
import net.mullvad.mullvadvpn.compose.cell.NavigationComposeCell
6565
import net.mullvad.mullvadvpn.compose.cell.NormalSwitchComposeCell
66-
import net.mullvad.mullvadvpn.compose.cell.SelectObfuscationCell
66+
import net.mullvad.mullvadvpn.compose.cell.ObfuscationModeCell
6767
import net.mullvad.mullvadvpn.compose.cell.SelectableCell
6868
import net.mullvad.mullvadvpn.compose.cell.SwitchComposeSubtitleCell
6969
import net.mullvad.mullvadvpn.compose.communication.DnsDialogResult
@@ -91,10 +91,10 @@ import net.mullvad.mullvadvpn.compose.util.showSnackbarImmediately
9191
import net.mullvad.mullvadvpn.constant.WIREGUARD_PRESET_PORTS
9292
import net.mullvad.mullvadvpn.lib.model.Constraint
9393
import net.mullvad.mullvadvpn.lib.model.Mtu
94+
import net.mullvad.mullvadvpn.lib.model.ObfuscationMode
9495
import net.mullvad.mullvadvpn.lib.model.Port
9596
import net.mullvad.mullvadvpn.lib.model.PortRange
9697
import net.mullvad.mullvadvpn.lib.model.QuantumResistantState
97-
import net.mullvad.mullvadvpn.lib.model.SelectedObfuscation
9898
import net.mullvad.mullvadvpn.lib.theme.AppTheme
9999
import net.mullvad.mullvadvpn.lib.theme.Dimens
100100
import net.mullvad.mullvadvpn.viewmodel.CustomDnsItem
@@ -127,7 +127,7 @@ private fun PreviewVpnSettings() {
127127
navigateToDns = { _, _ -> },
128128
onToggleDnsClick = {},
129129
onBackClick = {},
130-
onSelectObfuscationSetting = {},
130+
onSelectObfuscationMode = {},
131131
onSelectQuantumResistanceSetting = {},
132132
onWireguardPortSelected = {},
133133
)
@@ -251,7 +251,7 @@ fun VpnSettings(
251251
},
252252
onToggleDnsClick = vm::onToggleCustomDns,
253253
onBackClick = dropUnlessResumed { navigator.navigateUp() },
254-
onSelectObfuscationSetting = vm::onSelectObfuscationSetting,
254+
onSelectObfuscationMode = vm::onSelectObfuscationMode,
255255
onSelectQuantumResistanceSetting = vm::onSelectQuantumResistanceSetting,
256256
onWireguardPortSelected = vm::onWireguardPortSelected,
257257
navigateToShadowSocksSettings =
@@ -289,7 +289,7 @@ fun VpnSettingsScreen(
289289
navigateToDns: (index: Int?, address: String?) -> Unit = { _, _ -> },
290290
onToggleDnsClick: (Boolean) -> Unit = {},
291291
onBackClick: () -> Unit = {},
292-
onSelectObfuscationSetting: (selectedObfuscation: SelectedObfuscation) -> Unit = {},
292+
onSelectObfuscationMode: (obfuscationMode: ObfuscationMode) -> Unit = {},
293293
onSelectQuantumResistanceSetting: (quantumResistant: QuantumResistantState) -> Unit = {},
294294
onWireguardPortSelected: (port: Constraint<Port>) -> Unit = {},
295295
navigateToShadowSocksSettings: () -> Unit = {},
@@ -561,33 +561,33 @@ fun VpnSettingsScreen(
561561
itemWithDivider {
562562
SelectableCell(
563563
title = stringResource(id = R.string.automatic),
564-
isSelected = state.selectedObfuscation == SelectedObfuscation.Auto,
565-
onCellClicked = { onSelectObfuscationSetting(SelectedObfuscation.Auto) },
564+
isSelected = state.obfuscationMode == ObfuscationMode.Auto,
565+
onCellClicked = { onSelectObfuscationMode(ObfuscationMode.Auto) },
566566
)
567567
}
568568
itemWithDivider {
569-
SelectObfuscationCell(
570-
selectedObfuscation = SelectedObfuscation.Shadowsocks,
571-
isSelected = state.selectedObfuscation == SelectedObfuscation.Shadowsocks,
569+
ObfuscationModeCell(
570+
obfuscationMode = ObfuscationMode.Shadowsocks,
571+
isSelected = state.obfuscationMode == ObfuscationMode.Shadowsocks,
572572
port = state.selectedShadowsSocksObfuscationPort,
573-
onSelected = onSelectObfuscationSetting,
573+
onSelected = onSelectObfuscationMode,
574574
onNavigate = navigateToShadowSocksSettings,
575575
)
576576
}
577577
itemWithDivider {
578-
SelectObfuscationCell(
579-
selectedObfuscation = SelectedObfuscation.Udp2Tcp,
580-
isSelected = state.selectedObfuscation == SelectedObfuscation.Udp2Tcp,
578+
ObfuscationModeCell(
579+
obfuscationMode = ObfuscationMode.Udp2Tcp,
580+
isSelected = state.obfuscationMode == ObfuscationMode.Udp2Tcp,
581581
port = state.selectedUdp2TcpObfuscationPort,
582-
onSelected = onSelectObfuscationSetting,
582+
onSelected = onSelectObfuscationMode,
583583
onNavigate = navigateToUdp2TcpSettings,
584584
)
585585
}
586586
itemWithDivider {
587587
SelectableCell(
588588
title = stringResource(id = R.string.off),
589-
isSelected = state.selectedObfuscation == SelectedObfuscation.Off,
590-
onCellClicked = { onSelectObfuscationSetting(SelectedObfuscation.Off) },
589+
isSelected = state.obfuscationMode == ObfuscationMode.Off,
590+
onCellClicked = { onSelectObfuscationMode(ObfuscationMode.Off) },
591591
)
592592
}
593593

android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/VpnSettingsUiState.kt

+4-4
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ package net.mullvad.mullvadvpn.compose.state
33
import net.mullvad.mullvadvpn.lib.model.Constraint
44
import net.mullvad.mullvadvpn.lib.model.DefaultDnsOptions
55
import net.mullvad.mullvadvpn.lib.model.Mtu
6+
import net.mullvad.mullvadvpn.lib.model.ObfuscationMode
67
import net.mullvad.mullvadvpn.lib.model.Port
78
import net.mullvad.mullvadvpn.lib.model.PortRange
89
import net.mullvad.mullvadvpn.lib.model.QuantumResistantState
9-
import net.mullvad.mullvadvpn.lib.model.SelectedObfuscation
1010
import net.mullvad.mullvadvpn.viewmodel.CustomDnsItem
1111

1212
data class VpnSettingsUiState(
@@ -16,7 +16,7 @@ data class VpnSettingsUiState(
1616
val isCustomDnsEnabled: Boolean,
1717
val customDnsItems: List<CustomDnsItem>,
1818
val contentBlockersOptions: DefaultDnsOptions,
19-
val selectedObfuscation: SelectedObfuscation,
19+
val obfuscationMode: ObfuscationMode,
2020
val selectedUdp2TcpObfuscationPort: Constraint<Port>,
2121
val selectedShadowsSocksObfuscationPort: Constraint<Port>,
2222
val quantumResistant: QuantumResistantState,
@@ -37,7 +37,7 @@ data class VpnSettingsUiState(
3737
isCustomDnsEnabled: Boolean = false,
3838
customDnsItems: List<CustomDnsItem> = emptyList(),
3939
contentBlockersOptions: DefaultDnsOptions = DefaultDnsOptions(),
40-
selectedObfuscation: SelectedObfuscation = SelectedObfuscation.Off,
40+
obfuscationMode: ObfuscationMode = ObfuscationMode.Off,
4141
selectedUdp2TcpObfuscationPort: Constraint<Port> = Constraint.Any,
4242
selectedShadowsSocksObfuscationPort: Constraint<Port> = Constraint.Any,
4343
quantumResistant: QuantumResistantState = QuantumResistantState.Off,
@@ -53,7 +53,7 @@ data class VpnSettingsUiState(
5353
isCustomDnsEnabled,
5454
customDnsItems,
5555
contentBlockersOptions,
56-
selectedObfuscation,
56+
obfuscationMode,
5757
selectedUdp2TcpObfuscationPort,
5858
selectedShadowsSocksObfuscationPort,
5959
quantumResistant,

android/app/src/main/kotlin/net/mullvad/mullvadvpn/repository/SettingsRepository.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ import net.mullvad.mullvadvpn.lib.model.DefaultDnsOptions
1414
import net.mullvad.mullvadvpn.lib.model.DnsOptions
1515
import net.mullvad.mullvadvpn.lib.model.DnsState
1616
import net.mullvad.mullvadvpn.lib.model.Mtu
17+
import net.mullvad.mullvadvpn.lib.model.ObfuscationMode
1718
import net.mullvad.mullvadvpn.lib.model.Port
1819
import net.mullvad.mullvadvpn.lib.model.QuantumResistantState
19-
import net.mullvad.mullvadvpn.lib.model.SelectedObfuscation
2020
import net.mullvad.mullvadvpn.lib.model.Settings
2121

2222
class SettingsRepository(
@@ -65,7 +65,7 @@ class SettingsRepository(
6565
suspend fun setWireguardQuantumResistant(value: QuantumResistantState) =
6666
managementService.setWireguardQuantumResistant(value)
6767

68-
suspend fun setObfuscation(value: SelectedObfuscation) = managementService.setObfuscation(value)
68+
suspend fun setObfuscation(value: ObfuscationMode) = managementService.setObfuscation(value)
6969

7070
suspend fun setAutoConnect(isEnabled: Boolean) = managementService.setAutoConnect(isEnabled)
7171

android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/VpnSettingsViewModel.kt

+5-6
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@ import net.mullvad.mullvadvpn.constant.WIREGUARD_PRESET_PORTS
2323
import net.mullvad.mullvadvpn.lib.model.Constraint
2424
import net.mullvad.mullvadvpn.lib.model.DefaultDnsOptions
2525
import net.mullvad.mullvadvpn.lib.model.DnsState
26+
import net.mullvad.mullvadvpn.lib.model.ObfuscationMode
2627
import net.mullvad.mullvadvpn.lib.model.Port
2728
import net.mullvad.mullvadvpn.lib.model.QuantumResistantState
28-
import net.mullvad.mullvadvpn.lib.model.SelectedObfuscation
2929
import net.mullvad.mullvadvpn.lib.model.Settings
3030
import net.mullvad.mullvadvpn.lib.model.WireguardConstraints
3131
import net.mullvad.mullvadvpn.repository.RelayListRepository
@@ -67,8 +67,7 @@ class VpnSettingsViewModel(
6767
customDnsList = settings?.addresses()?.asStringAddressList() ?: listOf(),
6868
contentBlockersOptions =
6969
settings?.contentBlockersSettings() ?: DefaultDnsOptions(),
70-
selectedObfuscation =
71-
settings?.selectedObfuscationSettings() ?: SelectedObfuscation.Off,
70+
obfuscationMode = settings?.selectedObfuscationMode() ?: ObfuscationMode.Off,
7271
selectedUdp2TcpObfuscationPort =
7372
settings?.obfuscationSettings?.udp2tcp?.port ?: Constraint.Any,
7473
selectedShadowsocksObfuscationPort =
@@ -202,9 +201,9 @@ class VpnSettingsViewModel(
202201
}
203202
}
204203

205-
fun onSelectObfuscationSetting(selectedObfuscation: SelectedObfuscation) {
204+
fun onSelectObfuscationMode(obfuscationMode: ObfuscationMode) {
206205
viewModelScope.launch(dispatcher) {
207-
repository.setObfuscation(selectedObfuscation).onLeft {
206+
repository.setObfuscation(obfuscationMode).onLeft {
208207
_uiSideEffect.send(VpnSettingsSideEffect.ShowToast.GenericError)
209208
}
210209
}
@@ -280,7 +279,7 @@ class VpnSettingsViewModel(
280279

281280
private fun Settings.contentBlockersSettings() = tunnelOptions.dnsOptions.defaultOptions
282281

283-
private fun Settings.selectedObfuscationSettings() = obfuscationSettings.selectedObfuscation
282+
private fun Settings.selectedObfuscationMode() = obfuscationSettings.selectedObfuscationMode
284283

285284
private fun Settings.getWireguardPort() =
286285
relaySettings.relayConstraints.wireguardConstraints.port

android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/VpnSettingsViewModelState.kt

+4-4
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ import net.mullvad.mullvadvpn.compose.state.VpnSettingsUiState
44
import net.mullvad.mullvadvpn.lib.model.Constraint
55
import net.mullvad.mullvadvpn.lib.model.DefaultDnsOptions
66
import net.mullvad.mullvadvpn.lib.model.Mtu
7+
import net.mullvad.mullvadvpn.lib.model.ObfuscationMode
78
import net.mullvad.mullvadvpn.lib.model.Port
89
import net.mullvad.mullvadvpn.lib.model.PortRange
910
import net.mullvad.mullvadvpn.lib.model.QuantumResistantState
10-
import net.mullvad.mullvadvpn.lib.model.SelectedObfuscation
1111

1212
data class VpnSettingsViewModelState(
1313
val mtuValue: Mtu?,
@@ -16,7 +16,7 @@ data class VpnSettingsViewModelState(
1616
val isCustomDnsEnabled: Boolean,
1717
val customDnsList: List<CustomDnsItem>,
1818
val contentBlockersOptions: DefaultDnsOptions,
19-
val selectedObfuscation: SelectedObfuscation,
19+
val obfuscationMode: ObfuscationMode,
2020
val selectedUdp2TcpObfuscationPort: Constraint<Port>,
2121
val selectedShadowsocksObfuscationPort: Constraint<Port>,
2222
val quantumResistant: QuantumResistantState,
@@ -37,7 +37,7 @@ data class VpnSettingsViewModelState(
3737
isCustomDnsEnabled,
3838
customDnsList,
3939
contentBlockersOptions,
40-
selectedObfuscation,
40+
obfuscationMode,
4141
selectedUdp2TcpObfuscationPort,
4242
selectedShadowsocksObfuscationPort,
4343
quantumResistant,
@@ -56,7 +56,7 @@ data class VpnSettingsViewModelState(
5656
isCustomDnsEnabled = false,
5757
customDnsList = listOf(),
5858
contentBlockersOptions = DefaultDnsOptions(),
59-
selectedObfuscation = SelectedObfuscation.Auto,
59+
obfuscationMode = ObfuscationMode.Auto,
6060
selectedUdp2TcpObfuscationPort = Constraint.Any,
6161
selectedShadowsocksObfuscationPort = Constraint.Any,
6262
quantumResistant = QuantumResistantState.Off,

android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/ShadowsocksSettingsViewModelTest.kt

+4-1
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,13 @@ class ShadowsocksSettingsViewModelTest {
6565
@Test
6666
fun `uiState should reflect latest port range value from relay list`() = runTest {
6767
// Arrange
68+
val mockSettings: Settings = mockk()
69+
val port = Port(123)
70+
every { mockSettings.obfuscationSettings.shadowsocks.port } returns Constraint.Only(port)
6871
val mockPortRange: List<PortRange> = listOf(mockk())
6972

7073
portRangesFlow.update { mockPortRange }
71-
settingsFlow.update { mockk(relaxed = true) }
74+
settingsFlow.update { mockSettings }
7275

7376
// Act, Assert
7477
viewModel.uiState.test {

0 commit comments

Comments
 (0)