Skip to content

Commit 643b01e

Browse files
Oleg Labudkoartemiv4nov
Oleg Labudko
authored andcommitted
Pull request #91: AG-20784 Fix SafariService
Merge in ADGUARD-IOS/safari-converter from fix/AG-20784 to master * commit '6bc98745c96cd9bb1e038a45ac2518fd3e5aade5': added values to enum fixed SafariVersion wip refactored SafariService
2 parents 747040d + 6bc9874 commit 643b01e

File tree

3 files changed

+91
-24
lines changed

3 files changed

+91
-24
lines changed

Sources/CommandLineWrapper/main.swift

+1-3
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,7 @@ struct ConverterTool: ParsableCommand {
5151
var rules: String?
5252

5353
mutating func run() throws {
54-
guard let safariVersionResolved = SafariVersion(rawValue: safariVersion) else {
55-
throw SafariVersionError.unsupportedSafariVersion(version: safariVersion)
56-
}
54+
let safariVersionResolved = SafariVersion(rawValue: safariVersion);
5755

5856
guard let advancedBlockingFormat = AdvancedBlockingFormat(rawValue: advancedBlockingFormat) else {
5957
throw AdvancedBlockingFormatError.unsupportedFormat()

Sources/ContentBlockerConverter/SafariService.swift

+32-21
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,40 @@
11
import Foundation
22

3+
private let DEFAULT_SAFARI_VERSION = SafariVersion.safari13;
4+
35
public enum SafariVersion: Int {
46
// AdGuard for iOS supports Safari from 11 version
57
// AdGuard for Safari doesn't support OS Sierra, so minimal Safari version is 13
68
@available (OSX, unavailable)
7-
case safari11 = 11;
9+
case safari11 = 11
810
@available (OSX, unavailable)
9-
case safari12 = 12;
11+
case safari12 = 12
12+
13+
case safari13 = 13
14+
case safari14 = 14
15+
case safari15 = 15
16+
case safari16 = 16
17+
case safari16Plus
1018

11-
case safari13 = 13;
12-
case safari14 = 14;
13-
case safari15 = 15;
14-
case safari16 = 16;
19+
public init(rawValue: Int) {
20+
if rawValue > 16 {
21+
self = .safari16Plus
22+
return
23+
}
24+
25+
switch rawValue {
26+
case 13:
27+
self = .safari13
28+
case 14:
29+
self = .safari14
30+
case 15:
31+
self = .safari15
32+
case 16:
33+
self = .safari16
34+
default:
35+
self = DEFAULT_SAFARI_VERSION
36+
}
37+
}
1538

1639
/**
1740
* Returns rules limit for current Safari version
@@ -22,28 +45,16 @@ public enum SafariVersion: Int {
2245
}
2346

2447
func isSafari15orGreater() -> Bool {
25-
return self.rawValue >= SafariVersion.safari15.rawValue;
48+
return self.rawValue >= SafariVersion.safari15.rawValue || self == .safari16Plus;
2649

2750
}
2851

2952
func isSafari16orGreater() -> Bool {
30-
return self.rawValue >= SafariVersion.safari16.rawValue;
53+
return self.rawValue >= SafariVersion.safari16.rawValue || self == .safari16Plus;
3154
}
3255
}
3356

3457
class SafariService {
35-
var version: SafariVersion = .safari13;
58+
var version: SafariVersion = DEFAULT_SAFARI_VERSION;
3659
static let current: SafariService = SafariService();
3760
}
38-
39-
public enum SafariVersionError: Error, CustomDebugStringConvertible {
40-
case invalidSafariVersion(version: String)
41-
case unsupportedSafariVersion(version: Int)
42-
43-
public var debugDescription: String {
44-
switch self {
45-
case .invalidSafariVersion: return "Invalid Safari version value"
46-
case .unsupportedSafariVersion: return "The provided Safari version is not supported"
47-
}
48-
}
49-
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
import Foundation
2+
3+
import XCTest
4+
@testable import ContentBlockerConverter
5+
6+
final class SafariServiceTests: XCTestCase {
7+
8+
func testSafariServiceSupportedVersion() {
9+
var safariVersion = 13
10+
var safariVersionResolved = SafariVersion(rawValue: safariVersion);
11+
XCTAssertEqual(safariVersionResolved, .safari13)
12+
XCTAssertFalse(safariVersionResolved.isSafari15orGreater())
13+
XCTAssertFalse(safariVersionResolved.isSafari16orGreater())
14+
15+
safariVersion = 14
16+
safariVersionResolved = SafariVersion(rawValue: safariVersion)
17+
XCTAssertEqual(safariVersionResolved, .safari14)
18+
XCTAssertFalse(safariVersionResolved.isSafari15orGreater())
19+
XCTAssertFalse(safariVersionResolved.isSafari16orGreater())
20+
21+
safariVersion = 15
22+
safariVersionResolved = SafariVersion(rawValue: safariVersion)
23+
XCTAssertEqual(safariVersionResolved, .safari15)
24+
XCTAssertTrue(safariVersionResolved.isSafari15orGreater())
25+
XCTAssertFalse(safariVersionResolved.isSafari16orGreater())
26+
27+
safariVersion = 16
28+
safariVersionResolved = SafariVersion(rawValue: safariVersion);
29+
XCTAssertEqual(safariVersionResolved, .safari16)
30+
XCTAssertTrue(safariVersionResolved.isSafari15orGreater())
31+
XCTAssertTrue(safariVersionResolved.isSafari16orGreater())
32+
33+
safariVersion = 17
34+
safariVersionResolved = SafariVersion(rawValue: safariVersion)
35+
XCTAssertEqual(safariVersionResolved, .safari16Plus)
36+
XCTAssertTrue(safariVersionResolved.isSafari15orGreater())
37+
XCTAssertTrue(safariVersionResolved.isSafari16orGreater())
38+
}
39+
40+
func testSafariServiceUnsupportedVersion() {
41+
var safariVersion = 10
42+
var safariVersionResolved = SafariVersion(rawValue: safariVersion)
43+
XCTAssertEqual(safariVersionResolved, .safari13)
44+
XCTAssertFalse(safariVersionResolved.isSafari15orGreater())
45+
XCTAssertFalse(safariVersionResolved.isSafari16orGreater())
46+
47+
safariVersion = 35
48+
safariVersionResolved = SafariVersion(rawValue: safariVersion)
49+
XCTAssertEqual(safariVersionResolved, .safari16Plus)
50+
XCTAssertTrue(safariVersionResolved.isSafari15orGreater())
51+
XCTAssertTrue(safariVersionResolved.isSafari16orGreater())
52+
}
53+
54+
static var allTests = [
55+
("testSafariServiceSupportedVersion", testSafariServiceSupportedVersion),
56+
("testSafariServiceUnsupportedVersion", testSafariServiceUnsupportedVersion),
57+
]
58+
}

0 commit comments

Comments
 (0)