summaryrefslogtreecommitdiffhomepage
path: root/ios/MullvadVPN/Classes/AccessbilityIdentifier.swift
blob: c94c188e3443885923ece391054594c691bd469f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
//
//  RelayFilter.swift
//  MullvadVPN
//
//  Created by Jon Petersson on 2023-12-20.
//  Copyright © 2025 Mullvad VPN AB. All rights reserved.
//

import UIKit

public enum AccessibilityIdentifier: Equatable {
    // Buttons
    case addAccessMethodButton
    case accessMethodAddButton
    case accessMethodTestButton
    case accountButton
    case accessMethodUnreachableBackButton
    case accessMethodUnreachableSaveButton
    case agreeButton
    case alertOkButton
    case appLogsDoneButton
    case appLogsShareButton
    case applyButton
    case cancelButton
    case continueWithLoginButton
    case collapseButton
    case expandButton
    case createAccountButton
    case deleteButton
    case deviceCellRemoveButton
    case disconnectButton
    case revokedDeviceLoginButton
    case dnsSettingsEditButton
    case infoButton
    case copyButton
    case learnAboutPrivacyButton
    case logOutDeviceConfirmButton
    case logOutDeviceCancelButton
    case loginBarButton
    case loginTextFieldButton
    case logoutButton
    case purchaseButton
    case redeemVoucherButton
    case restorePurchasesButton
    case connectButton
    case selectLocationButton
    case closeSelectLocationButton
    case settingsButton
    case startUsingTheAppButton
    case problemReportAppLogsButton
    case problemReportSendButton
    case relayStatusCollapseButton
    case settingsDoneButton
    case openCustomListsMenuButton
    case addNewCustomListButton
    case editCustomListButton
    case saveCreateCustomListButton
    case confirmDeleteCustomListButton
    case cancelDeleteCustomListButton
    case customListLocationCheckmarkButton
    case listCustomListDoneButton
    case selectLocationFilterButton
    case relayFilterChipCloseButton
    case openPortSelectorMenuButton
    case cancelPurchaseListButton
    case acceptLocalNetworkSharingButton
    // Cells
    case deviceCell
    case accessMethodDirectCell
    case accessMethodBridgesCell
    case accessMethodEncryptedDNSCell
    case accessMethodProtocolSelectionCell
    case vpnSettingsCell
    case dnsSettingsAddServerCell
    case dnsSettingsUseCustomDNSCell
    case preferencesCell
    case versionCell
    case problemReportCell
    case faqCell
    case apiAccessCell
    case relayFilterProviderCell
    case wireGuardPortsCell
    case wireGuardObfuscationCell
    case udpOverTCPPortCell
    case quantumResistantTunnelCell
    case customListEditNameFieldCell
    case customListEditAddOrEditLocationCell
    case customListEditDeleteListCell
    case locationFilterOwnershipHeaderCell
    case locationFilterProvidersHeaderCell
    case ownershipMullvadOwnedCell
    case ownershipRentedCell
    case ownershipAnyCell
    case countryLocationCell
    case cityLocationCell
    case relayLocationCell
    case customListLocationCell
    case daitaConfirmAlertBackButton
    case daitaConfirmAlertEnableButton
    case multihopCell
    case daitaCell

    // Labels
    case accountPageDeviceNameLabel
    case socks5ServerCell
    case socks5PortCell
    case accountPagePaidUntilLabel
    case addAccessMethodTestStatusReachableLabel
    case addAccessMethodTestStatusTestingLabel
    case addAccessMethodTestStatusUnreachableLabel
    case headerDeviceNameLabel
    case connectionStatusConnectedLabel
    case connectionStatusConnectingLabel
    case connectionStatusNotConnectedLabel
    case welcomeAccountNumberLabel
    case connectionPanelDetailLabel
    case relayFilterChipLabel

    // Views
    case accessMethodProtocolPickerView
    case accessMethodUnreachableAlert
    case accountView
    case addLocationsView
    case addAccessMethodTableView
    case apiAccessView
    case alertContainerView
    case alertTitle
    case appLogsView
    case changeLogAlert
    case deviceManagementView
    case editAccessMethodView
    case headerBarView
    case loginView
    case outOfTimeView
    case termsOfServiceView
    case selectLocationView
    case selectLocationViewWrapper
    case selectLocationTableView
    case settingsTableView
    case vpnSettingsTableView
    case connectionView
    case problemReportView
    case problemReportSubmittedView
    case revokedDeviceView
    case welcomeView
    case deleteAccountView
    case settingsContainerView
    case newCustomListView
    case customListEditTableView
    case listCustomListsView
    case listCustomListsTableView
    case editCustomListEditLocationsView
    case editCustomListEditLocationsTableView
    case relayFilterChipView
    case dnsSettingsTableView
    case multihopView
    case daitaView

    // Other UI elements
    case accessMethodEnableSwitch
    case accessMethodNameTextField
    case logOutSpinnerAlertView
    case connectionPanelInAddressRow
    case connectionPanelOutAddressRow
    case connectionPanelOutIpv6AddressRow
    case connectionPanelServerLabel
    case customSwitch
    case customWireGuardPortTextField
    case dnsContentBlockersHeaderView
    case dnsSettingsEnterIPAddressTextField
    case loginStatusIconAuthenticating
    case loginStatusIconFailure
    case loginStatusIconSuccess
    case loginTextField
    case selectLocationSearchTextField
    case problemReportAppLogsTextView
    case problemReportEmailTextField
    case problemReportMessageTextView
    case deleteAccountTextField
    case socks5AuthenticationSwitch
    case statusImageView

    // DNS settings
    case includeAllNetworks
    case localNetworkSharing
    case dnsSettings
    case ipOverrides
    case wireGuardCustomPort
    case wireGuardObfuscationAutomatic
    case wireGuardObfuscationPort
    case wireGuardObfuscationOff
    case wireGuardObfuscationUdpOverTcp
    case wireGuardObfuscationShadowsocks
    case wireGuardObfuscationUdpOverTcpPort
    case wireGuardObfuscationShadowsocksPort
    case wireGuardPort(UInt16?)
    case udpOverTcpObfuscationSettings

    // Custom DNS
    case blockAll
    case blockAdvertising
    case blockTracking
    case blockMalware
    case blockGambling
    case blockAdultContent
    case blockSocialMedia
    case useCustomDNS
    case addDNSServer
    case dnsServer
    case dnsServerInfo

    // DAITA
    case daitaSwitch
    case daitaPromptAlert
    case daitaDirectOnlySwitch

    // Quantum resistance
    case quantumResistanceAutomatic
    case quantumResistanceOff
    case quantumResistanceOn

    // Multihop
    case multihopSwitch

    // WireGuard obfuscation settings
    case wireGuardObfuscationUdpOverTcpTable
    case wireGuardObfuscationShadowsocksTable

    // Error
    case unknown
}

extension AccessibilityIdentifier {
    public var asString: String {
        "\(self)"
    }
}

extension UIAccessibilityIdentification {
    @MainActor
    func setAccessibilityIdentifier(_ value: AccessibilityIdentifier?) {
        accessibilityIdentifier = value.map(\.asString)
    }
}