@@ -1605,7 +1605,7 @@ final class ContentBlockerConverterTests: XCTestCase {
1605
1605
XCTAssertEqual ( decoded [ 0 ] . action. type, " scriptlet " ) ;
1606
1606
XCTAssertEqual ( decoded [ 0 ] . action. scriptlet, " abort-on-property-read " ) ;
1607
1607
}
1608
-
1608
+
1609
1609
func testOptimizeRules( ) {
1610
1610
var result = converter. convertArray ( rules: [
1611
1611
" example.org##.banner1 " ,
@@ -1614,66 +1614,66 @@ final class ContentBlockerConverterTests: XCTestCase {
1614
1614
" example.org##.banner4 " ,
1615
1615
" example.org##.banner5 " ,
1616
1616
] , safariVersion: SafariVersion . safari14, optimize: true , advancedBlocking: false ) ;
1617
-
1617
+
1618
1618
// 5 cosmetic rules with same domain optimized in 1 rule
1619
1619
XCTAssertEqual ( result. convertedCount, 1 ) ;
1620
-
1620
+
1621
1621
result = converter. convertArray ( rules: [
1622
1622
" example.org##.banner " ,
1623
1623
" example.org##.banner " ,
1624
1624
" example.org##.banner " ,
1625
1625
" example.org##.banner " ,
1626
1626
" example.org##.banner " ,
1627
1627
] , safariVersion: SafariVersion . safari14, optimize: true , advancedBlocking: false ) ;
1628
-
1628
+
1629
1629
// 5 similar cosmetic rules domain optimized in 1 rule (removed duplicates)
1630
1630
XCTAssertEqual ( result. convertedCount, 1 ) ;
1631
-
1631
+
1632
1632
result = converter. convertArray ( rules: [
1633
1633
" example1.org##.banner " ,
1634
1634
" example2.org##.banner " ,
1635
1635
" example3.org##.banner " ,
1636
1636
" example4.org##.banner " ,
1637
1637
" example5.org##.banner " ,
1638
1638
] , safariVersion: SafariVersion . safari14, optimize: true , advancedBlocking: false ) ;
1639
-
1639
+
1640
1640
// cosmetic rules with different domain but same selector didn't optimized
1641
1641
XCTAssertEqual ( result. convertedCount, 5 ) ;
1642
-
1642
+
1643
1643
result = converter. convertArray ( rules: [
1644
1644
" ||example1.org " ,
1645
1645
" ||example2.org " ,
1646
1646
" ||example3.org " ,
1647
1647
" ||example4.org " ,
1648
1648
" ||example5.org " ,
1649
1649
] , safariVersion: SafariVersion . safari14, optimize: true , advancedBlocking: false ) ;
1650
-
1650
+
1651
1651
// blocking rules didn't optimized
1652
1652
XCTAssertEqual ( result. convertedCount, 5 ) ;
1653
-
1653
+
1654
1654
result = converter. convertArray ( rules: [
1655
1655
" ||example.org " ,
1656
1656
" ||example.org " ,
1657
1657
" ||example.org " ,
1658
1658
" ||example.org " ,
1659
1659
" ||example.org " ,
1660
1660
] , safariVersion: SafariVersion . safari14, optimize: true , advancedBlocking: false ) ;
1661
-
1661
+
1662
1662
// similar blocking rules didn't optimized
1663
1663
XCTAssertEqual ( result. convertedCount, 5 ) ;
1664
-
1664
+
1665
1665
result = converter. convertArray ( rules: [
1666
1666
" @@||*$document,domain=~example.org " ,
1667
1667
" @@||*$document,domain=~example.org " ,
1668
1668
" @@||*$document,domain=~example.org " ,
1669
1669
" @@||*$document,domain=~example.org " ,
1670
1670
" @@||*$document,domain=~example.org " ,
1671
1671
] , safariVersion: SafariVersion . safari14, optimize: true , advancedBlocking: false ) ;
1672
-
1672
+
1673
1673
// similar inverted allowlist rules didn't optimized
1674
1674
XCTAssertEqual ( result. convertedCount, 5 ) ;
1675
1675
}
1676
-
1676
+
1677
1677
func testLoadContext( ) {
1678
1678
var rules = [ " ||test.com^$subdocument,domain=example.com " ] ;
1679
1679
var result = converter. convertArray ( rules: rules, safariVersion: . safari15) ;
@@ -1682,7 +1682,7 @@ final class ContentBlockerConverterTests: XCTestCase {
1682
1682
var decoded = try ! parseJsonString ( json: result. converted) ;
1683
1683
XCTAssertEqual ( decoded. count, 1 ) ;
1684
1684
XCTAssertEqual ( decoded [ 0 ] . trigger. loadContext, [ " child-frame " ] ) ;
1685
-
1685
+
1686
1686
result = converter. convertArray ( rules: rules, safariVersion: . safari14) ;
1687
1687
XCTAssertEqual ( result. convertedCount, 1 ) ;
1688
1688
@@ -1698,14 +1698,14 @@ final class ContentBlockerConverterTests: XCTestCase {
1698
1698
decoded = try ! parseJsonString ( json: result. converted) ;
1699
1699
XCTAssertEqual ( decoded. count, 1 ) ;
1700
1700
XCTAssertEqual ( decoded [ 0 ] . trigger. loadContext, [ " top-frame " ] ) ;
1701
-
1701
+
1702
1702
result = converter. convertArray ( rules: rules, safariVersion: . safari14) ;
1703
1703
XCTAssertEqual ( result. convertedCount, 1 ) ;
1704
1704
1705
1705
decoded = try ! parseJsonString ( json: result. converted) ;
1706
1706
XCTAssertEqual ( decoded. count, 1 ) ;
1707
1707
XCTAssertNil ( decoded [ 0 ] . trigger. loadContext) ;
1708
-
1708
+
1709
1709
rules = [ " @@||test.com^$subdocument,domain=example.com " ] ;
1710
1710
result = converter. convertArray ( rules: rules, safariVersion: . safari15) ;
1711
1711
XCTAssertEqual ( result. convertedCount, 1 ) ;
@@ -1715,6 +1715,56 @@ final class ContentBlockerConverterTests: XCTestCase {
1715
1715
XCTAssertEqual ( decoded [ 0 ] . trigger. loadContext, [ " child-frame " ] ) ;
1716
1716
}
1717
1717
1718
+ func testResourceTypeForVariousSafariVersions( ) {
1719
+ // Safari 15
1720
+ var result = converter. convertArray ( rules: [ " ||miner.pr0gramm.com^$websocket " ] , safariVersion: . safari15) ;
1721
+ XCTAssertEqual ( result. convertedCount, 1 ) ;
1722
+
1723
+ var decoded = try ! parseJsonString ( json: result. converted) ;
1724
+ XCTAssertEqual ( decoded. count, 1 ) ;
1725
+ XCTAssertEqual ( decoded [ 0 ] . trigger. resourceType, [ " websocket " ] ) ;
1726
+
1727
+ // Safari 14
1728
+ result = converter. convertArray ( rules: [ " ||miner.pr0gramm.com^$websocket " ] , safariVersion: . safari14) ;
1729
+ XCTAssertEqual ( result. convertedCount, 1 ) ;
1730
+
1731
+ decoded = try ! parseJsonString ( json: result. converted) ;
1732
+ XCTAssertEqual ( decoded. count, 1 ) ;
1733
+ XCTAssertEqual ( decoded [ 0 ] . trigger. resourceType, [ " raw " ] ) ;
1734
+
1735
+ // test default safari version
1736
+ result = converter. convertArray ( rules: [ " ||miner.pr0gramm.com^$websocket " ] ) ;
1737
+ XCTAssertEqual ( result. convertedCount, 1 ) ;
1738
+
1739
+ decoded = try ! parseJsonString ( json: result. converted) ;
1740
+ XCTAssertEqual ( decoded. count, 1 ) ;
1741
+ XCTAssertEqual ( decoded [ 0 ] . trigger. resourceType, [ " raw " ] ) ;
1742
+
1743
+ // Safari 15
1744
+ result = converter. convertArray ( rules: [ " ||miner.pr0gramm.com^$xmlhttprequest " ] , safariVersion: . safari15) ;
1745
+ XCTAssertEqual ( result. convertedCount, 1 ) ;
1746
+
1747
+ decoded = try ! parseJsonString ( json: result. converted) ;
1748
+ XCTAssertEqual ( decoded. count, 1 ) ;
1749
+ XCTAssertEqual ( decoded [ 0 ] . trigger. resourceType, [ " fetch " ] ) ;
1750
+
1751
+ // Safari 14
1752
+ result = converter. convertArray ( rules: [ " ||miner.pr0gramm.com^$xmlhttprequest " ] , safariVersion: . safari14) ;
1753
+ XCTAssertEqual ( result. convertedCount, 1 ) ;
1754
+
1755
+ decoded = try ! parseJsonString ( json: result. converted) ;
1756
+ XCTAssertEqual ( decoded. count, 1 ) ;
1757
+ XCTAssertEqual ( decoded [ 0 ] . trigger. resourceType, [ " raw " ] ) ;
1758
+
1759
+ // test default safari version
1760
+ result = converter. convertArray ( rules: [ " ||miner.pr0gramm.com^$xmlhttprequest " ] ) ;
1761
+ XCTAssertEqual ( result. convertedCount, 1 ) ;
1762
+
1763
+ decoded = try ! parseJsonString ( json: result. converted) ;
1764
+ XCTAssertEqual ( decoded. count, 1 ) ;
1765
+ XCTAssertEqual ( decoded [ 0 ] . trigger. resourceType, [ " raw " ] ) ;
1766
+ }
1767
+
1718
1768
static var allTests = [
1719
1769
( " testEmpty " , testEmpty) ,
1720
1770
( " testConvertComment " , testConvertComment) ,
@@ -1763,5 +1813,6 @@ final class ContentBlockerConverterTests: XCTestCase {
1763
1813
( " testAdvancedBlockingExceptions " , testAdvancedBlockingExceptions) ,
1764
1814
( " testOptimizeRules " , testOptimizeRules) ,
1765
1815
( " testLoadContext " , testLoadContext) ,
1816
+ ( " testResourceTypeForVariousSafariVersions " , testResourceTypeForVariousSafariVersions) ,
1766
1817
]
1767
1818
}
0 commit comments