diff --git a/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 3dc3c25e30..fbe3b9b33b 100644 --- a/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -129,7 +129,7 @@ { "identity" : "trackerradarkit", "kind" : "remoteSourceControl", - "location" : "https://github.com/duckduckgo/TrackerRadarKit", + "location" : "https://github.com/duckduckgo/TrackerRadarKit.git", "state" : { "revision" : "4684440d03304e7638a2c8086895367e90987463", "version" : "1.2.1" diff --git a/DuckDuckGo/ContentBlocker/AppPrivacyConfigurationDataProvider.swift b/DuckDuckGo/ContentBlocker/AppPrivacyConfigurationDataProvider.swift index 89e8e93d1c..d453433127 100644 --- a/DuckDuckGo/ContentBlocker/AppPrivacyConfigurationDataProvider.swift +++ b/DuckDuckGo/ContentBlocker/AppPrivacyConfigurationDataProvider.swift @@ -22,8 +22,8 @@ import BrowserServicesKit final class AppPrivacyConfigurationDataProvider: EmbeddedDataProvider { public struct Constants { - public static let embeddedDataETag = "\"076b425659344a2de5a89f491574acd1\"" - public static let embeddedDataSHA = "f3ffc1e8d31228abbc97adede3e25bc8cabaff18d6b9cacc61ab135ca525d432" + public static let embeddedDataETag = "\"3c5698bbe5ae3ea13aa7e0c6916e13fa\"" + public static let embeddedDataSHA = "b332ca5a8f110cb592f9d875e57ca9e6ac8edad498003eedea11ea3946167570" } var embeddedDataEtag: String { diff --git a/DuckDuckGo/ContentBlocker/macos-config.json b/DuckDuckGo/ContentBlocker/macos-config.json index b1106f394f..343bdc18b6 100644 --- a/DuckDuckGo/ContentBlocker/macos-config.json +++ b/DuckDuckGo/ContentBlocker/macos-config.json @@ -1,6 +1,6 @@ { "readme": "https://github.com/duckduckgo/privacy-configuration", - "version": 1695630192250, + "version": 1695811101316, "features": { "adClickAttribution": { "readme": "https://help.duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/#3rd-party-tracker-loading-protection", @@ -313,10 +313,70 @@ { "domain": "roll20.net", "reason": "Performance issue for too many fields." + }, + { + "domain": "amazon.ca", + "reason": "Performance issue, infinite loop." + }, + { + "domain": "amazon.cn", + "reason": "Performance issue, infinite loop." + }, + { + "domain": "amazon.co.jp", + "reason": "Performance issue, infinite loop." + }, + { + "domain": "amazon.com", + "reason": "Performance issue, infinite loop." + }, + { + "domain": "amazon.com.au", + "reason": "Performance issue, infinite loop." + }, + { + "domain": "amazon.com.mx", + "reason": "Performance issue, infinite loop." + }, + { + "domain": "amazon.co.uk", + "reason": "Performance issue, infinite loop." + }, + { + "domain": "amazon.de", + "reason": "Performance issue, infinite loop." + }, + { + "domain": "amazon.es", + "reason": "Performance issue, infinite loop." + }, + { + "domain": "amazon.eu", + "reason": "Performance issue, infinite loop." + }, + { + "domain": "amazon.fr", + "reason": "Performance issue, infinite loop." + }, + { + "domain": "amazon.in", + "reason": "Performance issue, infinite loop." + }, + { + "domain": "amazon.it", + "reason": "Performance issue, infinite loop." + }, + { + "domain": "amazon.nl", + "reason": "Performance issue, infinite loop." + }, + { + "domain": "amazon.sa", + "reason": "Performance issue, infinite loop." } ], "state": "enabled", - "hash": "59c4bd9b8cee343c81da98bfe5d77928" + "hash": "2c000369279a9265b5247070e841be2d" }, "clickToLoad": { "exceptions": [ @@ -4252,11 +4312,24 @@ "state": "enabled", "features": { "rollout": { - "state": "disabled" + "state": "enabled", + "rollout": { + "steps": [ + { + "percent": 1 + }, + { + "percent": 5 + }, + { + "percent": 15 + } + ] + } } }, "exceptions": [], - "hash": "54776d4aa010391dc14a53ad69cd1777" + "hash": "39a36ca9002bd5aea4dd7b6bdb5b79d4" }, "navigatorInterface": { "exceptions": [ diff --git a/IntegrationTests/AutoconsentIntegrationTests.swift b/IntegrationTests/AutoconsentIntegrationTests.swift index d5ca4ecb05..ee99dfa5d2 100644 --- a/IntegrationTests/AutoconsentIntegrationTests.swift +++ b/IntegrationTests/AutoconsentIntegrationTests.swift @@ -56,7 +56,7 @@ class AutoconsentIntegrationTests: XCTestCase { func testWhenAutoconsentEnabled_cookieConsentManaged() async throws { // enable the feature PrivacySecurityPreferences.shared.autoconsentEnabled = true - let url = URL(string: "http://privacy-test-pages.glitch.me/features/autoconsent/")! + let url = URL(string: "http://privacy-test-pages.site/features/autoconsent/")! let tab = self.tabViewModel.tab @@ -83,7 +83,7 @@ class AutoconsentIntegrationTests: XCTestCase { func testWhenAutoconsentDisabled_promptIsDisplayed() async throws { // reset the feature setting PrivacySecurityPreferences.shared.autoconsentEnabled = nil - let url = URL(string: "http://privacy-test-pages.glitch.me/features/autoconsent/")! + let url = URL(string: "http://privacy-test-pages.site/features/autoconsent/")! let tab = self.tabViewModel.tab @@ -113,7 +113,7 @@ class AutoconsentIntegrationTests: XCTestCase { func testCosmeticRule_whenFakeCookieBannerIsDisplayed_bannerIsHidden() async throws { // enable the feature PrivacySecurityPreferences.shared.autoconsentEnabled = true - let url = URL(string: "http://privacy-test-pages.glitch.me/features/autoconsent/banner.html")! + let url = URL(string: "http://privacy-test-pages.site/features/autoconsent/banner.html")! let tab = self.tabViewModel.tab // expect `cosmetic` to be published @@ -164,7 +164,7 @@ class AutoconsentIntegrationTests: XCTestCase { func testCosmeticRule_whenFakeCookieBannerIsDisplayedAndScriptsAreReloaded_bannerIsHidden() async throws { // enable the feature PrivacySecurityPreferences.shared.autoconsentEnabled = true - let url = URL(string: "http://privacy-test-pages.glitch.me/features/autoconsent/banner.html")! + let url = URL(string: "http://privacy-test-pages.site/features/autoconsent/banner.html")! let tab = self.tabViewModel.tab // expect `cosmetic` to be published @@ -181,7 +181,7 @@ class AutoconsentIntegrationTests: XCTestCase { .first() .promise() - os_log("starting navigation to http://privacy-test-pages.glitch.me/features/autoconsent/banner.html") + os_log("starting navigation to http://privacy-test-pages.site/features/autoconsent/banner.html") let navigation = await tab.setUrl(url, userEntered: nil)?.value navigation?.appendResponder(navigationResponse: { response in diff --git a/IntegrationTests/HTTPSUpgrade/HTTPSUpgradeIntegrationTests.swift b/IntegrationTests/HTTPSUpgrade/HTTPSUpgradeIntegrationTests.swift index 1cb60ec33f..e8449ce70a 100644 --- a/IntegrationTests/HTTPSUpgrade/HTTPSUpgradeIntegrationTests.swift +++ b/IntegrationTests/HTTPSUpgrade/HTTPSUpgradeIntegrationTests.swift @@ -41,7 +41,7 @@ class HTTPSUpgradeIntegrationTests: XCTestCase { window = WindowsManager.openNewWindow(with: .none)! - XCTAssertTrue(AppPrivacyFeatures.shared.contentBlocking.privacyConfigurationManager.privacyConfig.isFeature(.httpsUpgrade, enabledForDomain: "privacy-test-pages.glitch.me")) + XCTAssertTrue(AppPrivacyFeatures.shared.contentBlocking.privacyConfigurationManager.privacyConfig.isFeature(.httpsUpgrade, enabledForDomain: "privacy-test-pages.site")) await ConfigurationManager.shared.refreshIfNeeded()?.value } @@ -59,7 +59,7 @@ class HTTPSUpgradeIntegrationTests: XCTestCase { var persistor = DownloadsPreferencesUserDefaultsPersistor() persistor.selectedDownloadLocation = FileManager.default.temporaryDirectory.absoluteString - let url = URL(string: "http://privacy-test-pages.glitch.me/privacy-protections/https-upgrades/")! + let url = URL(string: "http://privacy-test-pages.site/privacy-protections/https-upgrades/")! let upgradableUrl = URL(string: "http://good.third-party.site/privacy-protections/https-upgrades/frame.html")! let upgradedUrl = try? await AppPrivacyFeatures.shared.httpsUpgrade.upgrade(url: upgradableUrl).get() XCTAssertEqual(upgradedUrl, upgradableUrl.toHttps()!, "URL not upgraded") @@ -119,7 +119,7 @@ class HTTPSUpgradeIntegrationTests: XCTestCase { var persistor = DownloadsPreferencesUserDefaultsPersistor() persistor.selectedDownloadLocation = FileManager.default.temporaryDirectory.absoluteString - let url = URL(string: "http://privacy-test-pages.glitch.me/privacy-protections/https-loop-protection/")! + let url = URL(string: "http://privacy-test-pages.site/privacy-protections/https-loop-protection/")! let tabViewModel = self.tabViewModel let tab = tabViewModel.tab diff --git a/IntegrationTests/History/HistoryIntegrationTests.swift b/IntegrationTests/History/HistoryIntegrationTests.swift index ef2ac6c2fb..2a4f072aaa 100644 --- a/IntegrationTests/History/HistoryIntegrationTests.swift +++ b/IntegrationTests/History/HistoryIntegrationTests.swift @@ -189,7 +189,7 @@ class HistoryIntegrationTests: XCTestCase { let tab = Tab(content: .homePage) window = WindowsManager.openNewWindow(with: tab)! - let url = URL(string: "http://privacy-test-pages.glitch.me/tracker-reporting/1major-via-script.html")! + let url = URL(string: "http://privacy-test-pages.site/tracker-reporting/1major-via-script.html")! // navigate to a regular page, tracker count should be reset to 0 let trackerPromise = tab.privacyInfoPublisher.compactMap { $0?.$trackerInfo } @@ -217,7 +217,7 @@ class HistoryIntegrationTests: XCTestCase { let tab = Tab(content: .homePage) window = WindowsManager.openNewWindow(with: tab)! - let url = URL(string: "http://privacy-test-pages.glitch.me/tracker-reporting/1major-with-surrogate.html")! + let url = URL(string: "http://privacy-test-pages.site/tracker-reporting/1major-with-surrogate.html")! // navigate to a regular page, tracker count should be reset to 0 let trackerPromise = tab.privacyInfoPublisher.compactMap { $0?.$trackerInfo } diff --git a/IntegrationTests/NavigationProtection/NavigationProtectionIntegrationTests.swift b/IntegrationTests/NavigationProtection/NavigationProtectionIntegrationTests.swift index b474b8e9f8..f4fb7db436 100644 --- a/IntegrationTests/NavigationProtection/NavigationProtectionIntegrationTests.swift +++ b/IntegrationTests/NavigationProtection/NavigationProtectionIntegrationTests.swift @@ -65,7 +65,7 @@ class NavigationProtectionIntegrationTests: XCTestCase { let tab = Tab(content: .none, extensionsBuilder: extensionsBuilder) window = WindowsManager.openNewWindow(with: tab)! - let url = URL(string: "https://privacy-test-pages.glitch.me/privacy-protections/amp/")! + let url = URL(string: "https://privacy-test-pages.site/privacy-protections/amp/")! _=try await tab.setUrl(url, userEntered: nil)?.value?.result.get() let itemsCount = try await tab.webView.evaluateJavaScript("document.getElementsByTagName('li').length") as? Int ?? 0 @@ -148,7 +148,7 @@ class NavigationProtectionIntegrationTests: XCTestCase { let tab = Tab(content: .none, extensionsBuilder: extensionsBuilder) window = WindowsManager.openNewWindow(with: tab)! - let url = URL(string: "https://privacy-test-pages.glitch.me/privacy-protections/referrer-trimming/")! + let url = URL(string: "https://privacy-test-pages.site/privacy-protections/referrer-trimming/")! _=try await tab.setUrl(url, userEntered: nil)?.value?.result.get() // run test @@ -188,9 +188,9 @@ class NavigationProtectionIntegrationTests: XCTestCase { XCTAssertTrue(results.count > 0) for result in results { if result.id.hasPrefix("1p") { - XCTAssertEqual(result.value?.string, "https://privacy-test-pages.glitch.me/privacy-protections/referrer-trimming/", result.id) + XCTAssertEqual(result.value?.string, "https://privacy-test-pages.site/privacy-protections/referrer-trimming/", result.id) } else { - XCTAssertEqual(result.value?.string, "https://privacy-test-pages.glitch.me/", result.id) + XCTAssertEqual(result.value?.string, "https://privacy-test-pages.site/", result.id) } } } @@ -201,7 +201,7 @@ class NavigationProtectionIntegrationTests: XCTestCase { window = WindowsManager.openNewWindow(with: tab)! let tabViewModel = (window.contentViewController as! MainViewController).browserTabViewController.tabViewModel! - let url = URL(string: "https://privacy-test-pages.glitch.me/privacy-protections/gpc/")! + let url = URL(string: "https://privacy-test-pages.site/privacy-protections/gpc/")! // disable GPC redirects PrivacySecurityPreferences.shared.gpcEnabled = false _=try await tab.setUrl(url, userEntered: nil)?.value?.result.get() diff --git a/IntegrationTests/PrivacyDashboard/PrivacyDashboardIntegrationTests.swift b/IntegrationTests/PrivacyDashboard/PrivacyDashboardIntegrationTests.swift index db44324c0e..5d9f91aa0c 100644 --- a/IntegrationTests/PrivacyDashboard/PrivacyDashboardIntegrationTests.swift +++ b/IntegrationTests/PrivacyDashboard/PrivacyDashboardIntegrationTests.swift @@ -64,7 +64,7 @@ class PrivacyDashboardIntegrationTests: XCTestCase { .promise() // load the test page - let url = URL(string: "http://privacy-test-pages.glitch.me/tracker-reporting/1major-via-script.html")! + let url = URL(string: "http://privacy-test-pages.site/tracker-reporting/1major-via-script.html")! _=await tab.setUrl(url, userEntered: nil)?.value?.result let trackersCount = try await trackersCountPromise.value diff --git a/scripts/update_embedded.sh b/scripts/update_embedded.sh index 6bedc1bfc2..f76c3671c1 100755 --- a/scripts/update_embedded.sh +++ b/scripts/update_embedded.sh @@ -3,7 +3,7 @@ set -eo pipefail TDS_URL="https://staticcdn.duckduckgo.com/trackerblocking/v5/current/macos-tds.json" -CONFIG_URL="https://staticcdn.duckduckgo.com/trackerblocking/config/v2/macos-config.json" +CONFIG_URL="https://staticcdn.duckduckgo.com/trackerblocking/config/v3/macos-config.json" # If -c is passed, then check the URLs in the Configuration files are correct. if [ "$1" == "-c" ]; then