Skip to content

Commit 534866b

Browse files
committed
Merge branch 'IOS-962-AccessibilityIdentifier-refactor'
2 parents 3232f1b + bdf7473 commit 534866b

File tree

69 files changed

+198
-200
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

69 files changed

+198
-200
lines changed

ios/MullvadVPN/Classes/AccessbilityIdentifier.swift

+10-10
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
import UIKit
1010

11-
public enum AccessibilityIdentifier: String {
11+
public enum AccessibilityIdentifier: Equatable {
1212
// Buttons
1313
case addAccessMethodButton
1414
case accessMethodAddButton
@@ -181,7 +181,7 @@ public enum AccessibilityIdentifier: String {
181181
case wireGuardObfuscationOff
182182
case wireGuardObfuscationUdpOverTcp
183183
case wireGuardObfuscationShadowsocks
184-
case wireGuardPort
184+
case wireGuardPort(UInt16?)
185185
case udpOverTcpObfuscationSettings
186186

187187
// Custom DNS
@@ -214,14 +214,14 @@ public enum AccessibilityIdentifier: String {
214214
case unknown
215215
}
216216

217+
extension AccessibilityIdentifier {
218+
public var asString: String {
219+
"\(self)"
220+
}
221+
}
222+
217223
extension UIAccessibilityIdentification {
218-
var accessibilityIdentifier: AccessibilityIdentifier? {
219-
get {
220-
guard let accessibilityIdentifier else { return nil }
221-
return AccessibilityIdentifier(rawValue: accessibilityIdentifier)
222-
}
223-
set {
224-
accessibilityIdentifier = newValue?.rawValue
225-
}
224+
func setAccessibilityIdentifier(_ value: AccessibilityIdentifier?) {
225+
accessibilityIdentifier = value.map(\.asString)
226226
}
227227
}

ios/MullvadVPN/Containers/Root/HeaderBarView.swift

+4-4
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ class HeaderBarView: UIView {
3333
label.font = UIFont.systemFont(ofSize: 14)
3434
label.textColor = UIColor(white: 1.0, alpha: 0.8)
3535
label.setContentHuggingPriority(.defaultHigh, for: .horizontal)
36-
label.accessibilityIdentifier = .headerDeviceNameLabel
36+
label.setAccessibilityIdentifier(.headerDeviceNameLabel)
3737
return label
3838
}()
3939

@@ -58,7 +58,7 @@ class HeaderBarView: UIView {
5858

5959
let accountButton: UIButton = {
6060
let button = makeHeaderBarButton(with: UIImage(named: "IconAccount"))
61-
button.accessibilityIdentifier = .accountButton
61+
button.setAccessibilityIdentifier(.accountButton)
6262
button.accessibilityLabel = NSLocalizedString(
6363
"HEADER_BAR_ACCOUNT_BUTTON_ACCESSIBILITY_LABEL",
6464
tableName: "HeaderBar",
@@ -72,7 +72,7 @@ class HeaderBarView: UIView {
7272

7373
let settingsButton: UIButton = {
7474
let button = makeHeaderBarButton(with: UIImage(named: "IconSettings"))
75-
button.accessibilityIdentifier = .settingsButton
75+
button.setAccessibilityIdentifier(.settingsButton)
7676
button.accessibilityLabel = NSLocalizedString(
7777
"HEADER_BAR_SETTINGS_BUTTON_ACCESSIBILITY_LABEL",
7878
tableName: "HeaderBar",
@@ -170,7 +170,7 @@ class HeaderBarView: UIView {
170170
)
171171

172172
accessibilityContainerType = .semanticGroup
173-
accessibilityIdentifier = .headerBarView
173+
setAccessibilityIdentifier(.headerBarView)
174174

175175
let brandImageSize = brandNameImage?.size ?? .zero
176176
let brandNameAspectRatio = brandImageSize.width / max(brandImageSize.height, 1)

ios/MullvadVPN/Coordinators/ApplicationCoordinator.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -559,7 +559,7 @@ final class ApplicationCoordinator: Coordinator, Presenting, RootContainerViewCo
559559
)
560560

561561
let navigationController = CustomNavigationController()
562-
navigationController.view.accessibilityIdentifier = .settingsContainerView
562+
navigationController.view.setAccessibilityIdentifier(.settingsContainerView)
563563

564564
let configurationTester = ProxyConfigurationTester(transportProvider: configuredTransportProvider)
565565

ios/MullvadVPN/Coordinators/CustomLists/AddLocationsViewController.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class AddLocationsViewController: UIViewController {
2727
tableView.separatorInset = .zero
2828
tableView.rowHeight = 56
2929
tableView.indicatorStyle = .white
30-
tableView.accessibilityIdentifier = .editCustomListEditLocationsTableView
30+
tableView.setAccessibilityIdentifier(.editCustomListEditLocationsTableView)
3131
return tableView
3232
}()
3333

@@ -46,7 +46,7 @@ class AddLocationsViewController: UIViewController {
4646

4747
override func viewDidLoad() {
4848
super.viewDidLoad()
49-
view.accessibilityIdentifier = .editCustomListEditLocationsView
49+
view.setAccessibilityIdentifier(.editCustomListEditLocationsView)
5050
tableView.backgroundColor = view.backgroundColor
5151
view.backgroundColor = .secondaryColor
5252
addConstraints()

ios/MullvadVPN/Coordinators/CustomLists/CustomListCellConfiguration.swift

+3-3
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ struct CustomListCellConfiguration {
7979
contentConfiguration.maxLength = NameInputFormatter.maxLength
8080
contentConfiguration.editingEvents.onChange = subject.bindTextAction(to: \.name)
8181

82-
cell.accessibilityIdentifier = AccessibilityIdentifier.customListEditNameFieldCell
82+
cell.setAccessibilityIdentifier(.customListEditNameFieldCell)
8383
cell.contentConfiguration = contentConfiguration
8484
}
8585

@@ -88,7 +88,7 @@ struct CustomListCellConfiguration {
8888

8989
contentConfiguration.text = itemIdentifier.text
9090
cell.contentConfiguration = contentConfiguration
91-
cell.accessibilityIdentifier = AccessibilityIdentifier.customListEditAddOrEditLocationCell
91+
cell.setAccessibilityIdentifier(.customListEditAddOrEditLocationCell)
9292

9393
if let cell = cell as? CustomCellDisclosureHandling {
9494
cell.disclosureType = .chevron
@@ -104,7 +104,7 @@ struct CustomListCellConfiguration {
104104
onDelete?()
105105
}
106106

107-
cell.accessibilityIdentifier = AccessibilityIdentifier.customListEditDeleteListCell
107+
cell.setAccessibilityIdentifier(.customListEditDeleteListCell)
108108
cell.contentConfiguration = contentConfiguration
109109
}
110110
}

ios/MullvadVPN/Coordinators/CustomLists/CustomListViewController.swift

+3-3
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ class CustomListViewController: UIViewController {
5858
}
5959
)
6060
barButtonItem.style = .done
61-
barButtonItem.accessibilityIdentifier = AccessibilityIdentifier.saveCreateCustomListButton
61+
barButtonItem.setAccessibilityIdentifier(.saveCreateCustomListButton)
6262

6363
return barButtonItem
6464
}()
@@ -87,7 +87,7 @@ class CustomListViewController: UIViewController {
8787
navigationItem.rightBarButtonItem = saveBarButton
8888
view.directionalLayoutMargins = UIMetrics.contentLayoutMargins
8989
view.backgroundColor = .secondaryColor
90-
view.accessibilityIdentifier = .newCustomListView
90+
view.setAccessibilityIdentifier(.newCustomListView)
9191
isModalInPresentation = true
9292

9393
addSubviews()
@@ -104,7 +104,7 @@ class CustomListViewController: UIViewController {
104104
tableView.delegate = dataSourceConfiguration
105105
tableView.backgroundColor = .secondaryColor
106106
tableView.registerReusableViews(from: CustomListItemIdentifier.CellIdentifier.self)
107-
tableView.accessibilityIdentifier = AccessibilityIdentifier.customListEditTableView
107+
tableView.setAccessibilityIdentifier(.customListEditTableView)
108108
}
109109

110110
private func configureDataSource() {

ios/MullvadVPN/Coordinators/CustomLists/ListCustomListViewController.swift

+3-3
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ class ListCustomListViewController: UIViewController {
5050
super.viewDidLoad()
5151

5252
view.backgroundColor = .secondaryColor
53-
view.accessibilityIdentifier = .listCustomListsView
53+
view.setAccessibilityIdentifier(.listCustomListsView)
5454

5555
addSubviews()
5656
configureNavigationItem()
@@ -89,7 +89,7 @@ class ListCustomListViewController: UIViewController {
8989
tableView.separatorStyle = .singleLine
9090
tableView.rowHeight = UIMetrics.SettingsCell.customListsCellHeight
9191
tableView.registerReusableViews(from: CellReuseIdentifier.self)
92-
tableView.accessibilityIdentifier = .listCustomListsTableView
92+
tableView.setAccessibilityIdentifier(.listCustomListsTableView)
9393
}
9494

9595
private func configureNavigationItem() {
@@ -107,7 +107,7 @@ class ListCustomListViewController: UIViewController {
107107
})
108108
)
109109

110-
navigationItem.rightBarButtonItem?.accessibilityIdentifier = .listCustomListDoneButton
110+
navigationItem.rightBarButtonItem?.setAccessibilityIdentifier(.listCustomListDoneButton)
111111
}
112112

113113
private func configureDataSource() {

ios/MullvadVPN/Coordinators/LocationCoordinator.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,7 @@ extension LocationCoordinator: LocationViewControllerWrapperDelegate {
284284
self?.showAddCustomList(nodes: nodes)
285285
}
286286
)
287-
addCustomListAction.accessibilityIdentifier = AccessibilityIdentifier.addNewCustomListButton
287+
addCustomListAction.setAccessibilityIdentifier(.addNewCustomListButton)
288288
actionSheet.addAction(addCustomListAction)
289289

290290
let editAction = UIAlertAction(
@@ -297,7 +297,7 @@ extension LocationCoordinator: LocationViewControllerWrapperDelegate {
297297
}
298298
)
299299
editAction.isEnabled = !customListRepository.fetchAll().isEmpty
300-
editAction.accessibilityIdentifier = AccessibilityIdentifier.editCustomListButton
300+
editAction.setAccessibilityIdentifier(.editCustomListButton)
301301
actionSheet.addAction(editAction)
302302

303303
actionSheet.addAction(UIAlertAction(

ios/MullvadVPN/Coordinators/Settings/APIAccess/Cells/SwitchCellContentView.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ class SwitchCellContentView: UIView, UIContentView, UITextFieldDelegate {
7676
private func configureSwitch() {
7777
switchContainer.control.isOn = actualConfiguration.isOn
7878
switchContainer.transform = CGAffineTransform(scaleX: 0.85, y: 0.85)
79-
switchContainer.accessibilityIdentifier = actualConfiguration.accessibilityIdentifier
79+
switchContainer.setAccessibilityIdentifier(actualConfiguration.accessibilityIdentifier)
8080
}
8181

8282
private func addSubviews() {

ios/MullvadVPN/Coordinators/Settings/APIAccess/Common/SocksSectionHandler.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ struct SocksSectionHandler {
3838
contentConfiguration.inputText = subject.value.socks.server
3939
contentConfiguration.textFieldProperties = .withSmartFeaturesDisabled()
4040
contentConfiguration.editingEvents.onChange = subject.bindTextAction(to: \.socks.server)
41-
cell.accessibilityIdentifier = .socks5ServerCell
41+
cell.setAccessibilityIdentifier(.socks5ServerCell)
4242
cell.contentConfiguration = contentConfiguration
4343
}
4444

@@ -51,7 +51,7 @@ struct SocksSectionHandler {
5151
contentConfiguration.editingEvents.onChange = subject.bindTextAction(to: \.socks.port)
5252
contentConfiguration.textFieldProperties = .withSmartFeaturesDisabled()
5353
contentConfiguration.textFieldProperties.keyboardType = .numberPad
54-
cell.accessibilityIdentifier = .socks5PortCell
54+
cell.setAccessibilityIdentifier(.socks5PortCell)
5555
cell.contentConfiguration = contentConfiguration
5656
}
5757

ios/MullvadVPN/Coordinators/Settings/APIAccess/Edit/EditAccessMethodViewController.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ class EditAccessMethodViewController: UIViewController {
4747

4848
view.backgroundColor = .secondaryColor
4949

50-
tableView.accessibilityIdentifier = .editAccessMethodView
50+
tableView.setAccessibilityIdentifier(.editAccessMethodView)
5151
tableView.backgroundColor = .secondaryColor
5252
tableView.delegate = self
5353

ios/MullvadVPN/Coordinators/Settings/APIAccess/Edit/MethodSettings/MethodSettingsCellConfiguration.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ class MethodSettingsCellConfiguration {
113113
contentConfiguration.maxLength = NameInputFormatter.maxLength
114114
contentConfiguration.editingEvents.onChange = subject.bindTextAction(to: \.name)
115115

116-
cell.accessibilityIdentifier = .accessMethodNameTextField
116+
cell.setAccessibilityIdentifier(.accessMethodNameTextField)
117117
cell.setDisabled(isTesting)
118118
cell.contentConfiguration = contentConfiguration
119119
}
@@ -156,7 +156,7 @@ class MethodSettingsCellConfiguration {
156156
cell.disclosureType = .chevron
157157
}
158158

159-
cell.accessibilityIdentifier = .accessMethodProtocolSelectionCell
159+
cell.setAccessibilityIdentifier(.accessMethodProtocolSelectionCell)
160160
cell.setDisabled(isTesting)
161161
}
162162

ios/MullvadVPN/Coordinators/Settings/APIAccess/Edit/MethodSettings/MethodSettingsViewController.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -76,12 +76,12 @@ class MethodSettingsViewController: UITableViewController {
7676
override func viewDidLoad() {
7777
super.viewDidLoad()
7878

79-
view.accessibilityIdentifier = .addAccessMethodTableView
79+
view.setAccessibilityIdentifier(.addAccessMethodTableView)
8080
view.directionalLayoutMargins = UIMetrics.contentLayoutMargins
8181
view.backgroundColor = .secondaryColor
8282

8383
navigationItem.rightBarButtonItem = saveBarButton
84-
navigationItem.rightBarButtonItem?.accessibilityIdentifier = .accessMethodAddButton
84+
navigationItem.rightBarButtonItem?.setAccessibilityIdentifier(.accessMethodAddButton)
8585
navigationItem.rightBarButtonItem?.isAccessibilityElement = true
8686
isModalInPresentation = true
8787

ios/MullvadVPN/Coordinators/Settings/APIAccess/Edit/MethodSettings/MethodTestingStatusCellContentView.swift

+3-3
Original file line numberDiff line numberDiff line change
@@ -139,11 +139,11 @@ class MethodTestingStatusCellContentView: UIView, UIContentView {
139139
// Set accessibility identifier for the text label based on the status it is indicating
140140
switch actualConfiguration.status {
141141
case .reachable:
142-
textLabel.accessibilityIdentifier = .addAccessMethodTestStatusReachableLabel
142+
textLabel.setAccessibilityIdentifier(.addAccessMethodTestStatusReachableLabel)
143143
case .unreachable:
144-
textLabel.accessibilityIdentifier = .addAccessMethodTestStatusUnreachableLabel
144+
textLabel.setAccessibilityIdentifier(.addAccessMethodTestStatusUnreachableLabel)
145145
case .testing:
146-
textLabel.accessibilityIdentifier = .addAccessMethodTestStatusTestingLabel
146+
textLabel.setAccessibilityIdentifier(.addAccessMethodTestStatusTestingLabel)
147147
}
148148

149149
// Text label is always the last one, so only add it into the stack if it's not there yet.

ios/MullvadVPN/Coordinators/Settings/APIAccess/List/ListAccessMethodViewController.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ class ListAccessMethodViewController: UIViewController, UITableViewDelegate {
6262

6363
tableView.registerReusableViews(from: CellReuseIdentifier.self)
6464

65-
view.accessibilityIdentifier = .apiAccessView
65+
view.setAccessibilityIdentifier(.apiAccessView)
6666

6767
let headerView = createHeaderView()
6868
view.addConstrainedSubviews([headerView, tableView]) {
@@ -115,7 +115,7 @@ class ListAccessMethodViewController: UIViewController, UITableViewDelegate {
115115
button.addAction(UIAction { [weak self] _ in
116116
self?.sendAddNew()
117117
}, for: .touchUpInside)
118-
button.accessibilityIdentifier = .addAccessMethodButton
118+
button.setAccessibilityIdentifier(.addAccessMethodButton)
119119

120120
let fontSize = button.titleLabel?.font.pointSize ?? 0
121121
button.titleLabel?.font = UIFont.systemFont(ofSize: fontSize, weight: .regular)

ios/MullvadVPN/Coordinators/Settings/APIAccess/Pickers/AccessMethodProtocolPicker.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ struct AccessMethodProtocolPicker {
2323

2424
let dataSource = AccessMethodProtocolPickerDataSource()
2525
let controller = ListItemPickerViewController(dataSource: dataSource, selectedItemID: currentValue)
26-
controller.view.accessibilityIdentifier = .accessMethodProtocolPickerView
26+
controller.view.setAccessibilityIdentifier(.accessMethodProtocolPickerView)
2727

2828
controller.navigationItem.title = NSLocalizedString(
2929
"SELECT_PROTOCOL_NAV_TITLE",

ios/MullvadVPN/Coordinators/Settings/SettingsViewControllerFactory.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ struct SettingsViewControllerFactory {
103103
value: "Multihop",
104104
comment: ""
105105
)
106-
host.view.accessibilityIdentifier = AccessibilityIdentifier.multihopView.rawValue
106+
host.view.setAccessibilityIdentifier(.multihopView)
107107

108108
return .viewController(host)
109109
}
@@ -129,7 +129,7 @@ struct SettingsViewControllerFactory {
129129
value: "DAITA",
130130
comment: ""
131131
)
132-
host.view.accessibilityIdentifier = AccessibilityIdentifier.daitaView.rawValue
132+
host.view.setAccessibilityIdentifier(.daitaView)
133133

134134
return .viewController(host)
135135
}

ios/MullvadVPN/View controllers/Account/AccountContentView.swift

+5-5
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@ import UIKit
1111
class AccountContentView: UIView {
1212
let purchaseButton: InAppPurchaseButton = {
1313
let button = InAppPurchaseButton()
14-
button.accessibilityIdentifier = .purchaseButton
14+
button.setAccessibilityIdentifier(.purchaseButton)
1515
return button
1616
}()
1717

1818
let redeemVoucherButton: AppButton = {
1919
let button = AppButton(style: .success)
20-
button.accessibilityIdentifier = .redeemVoucherButton
20+
button.setAccessibilityIdentifier(.redeemVoucherButton)
2121
button.setTitle(NSLocalizedString(
2222
"REDEEM_VOUCHER_BUTTON_TITLE",
2323
tableName: "Account",
@@ -29,7 +29,7 @@ class AccountContentView: UIView {
2929

3030
let logoutButton: AppButton = {
3131
let button = AppButton(style: .danger)
32-
button.accessibilityIdentifier = .logoutButton
32+
button.setAccessibilityIdentifier(.logoutButton)
3333
button.setTitle(NSLocalizedString(
3434
"LOGOUT_BUTTON_TITLE",
3535
tableName: "Account",
@@ -41,7 +41,7 @@ class AccountContentView: UIView {
4141

4242
let deleteButton: AppButton = {
4343
let button = AppButton(style: .danger)
44-
button.accessibilityIdentifier = .deleteButton
44+
button.setAccessibilityIdentifier(.deleteButton)
4545
button.setTitle(NSLocalizedString(
4646
"DELETE_BUTTON_TITLE",
4747
tableName: "Account",
@@ -101,7 +101,7 @@ class AccountContentView: UIView {
101101
super.init(frame: frame)
102102

103103
directionalLayoutMargins = UIMetrics.contentLayoutMargins
104-
accessibilityIdentifier = .accountView
104+
setAccessibilityIdentifier(.accountView)
105105

106106
addConstrainedSubviews([contentStackView, buttonStackView]) {
107107
contentStackView.pinEdgesToSuperviewMargins(.all().excluding(.bottom))

ios/MullvadVPN/View controllers/Account/AccountDeviceRow.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class AccountDeviceRow: UIView {
1313
didSet {
1414
deviceLabel.text = deviceName?.capitalized ?? ""
1515
accessibilityValue = deviceName
16-
accessibilityIdentifier = .accountPageDeviceNameLabel
16+
setAccessibilityIdentifier(.accountPageDeviceNameLabel)
1717
}
1818
}
1919

@@ -41,7 +41,7 @@ class AccountDeviceRow: UIView {
4141

4242
private let infoButton: UIButton = {
4343
let button = IncreasedHitButton(type: .system)
44-
button.accessibilityIdentifier = .infoButton
44+
button.setAccessibilityIdentifier(.infoButton)
4545
button.tintColor = .white
4646
button.setImage(UIImage(named: "IconInfo"), for: .normal)
4747
return button

0 commit comments

Comments
 (0)