diff --git a/DuckDuckGo.xcodeproj/project.pbxproj b/DuckDuckGo.xcodeproj/project.pbxproj index 8523dca425..3935eac4f6 100644 --- a/DuckDuckGo.xcodeproj/project.pbxproj +++ b/DuckDuckGo.xcodeproj/project.pbxproj @@ -10104,7 +10104,7 @@ repositoryURL = "https://github.com/duckduckgo/BrowserServicesKit"; requirement = { kind = revision; - revision = 091de77bb40701c566b57e55c42f47a8b2a9cd78; + revision = 3dc29dd35a9084c1d6dae8748445be37e4679172; }; }; AA06B6B52672AF8100F541C5 /* XCRemoteSwiftPackageReference "Sparkle" */ = { diff --git a/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 1b5d02790c..be322377f3 100644 --- a/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -14,7 +14,7 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/duckduckgo/BrowserServicesKit", "state" : { - "revision" : "091de77bb40701c566b57e55c42f47a8b2a9cd78" + "revision" : "3dc29dd35a9084c1d6dae8748445be37e4679172" } }, { diff --git a/DuckDuckGo/Common/Localizables/UserText+NetworkProtection.swift b/DuckDuckGo/Common/Localizables/UserText+NetworkProtection.swift index de4888f749..329b977ed7 100644 --- a/DuckDuckGo/Common/Localizables/UserText+NetworkProtection.swift +++ b/DuckDuckGo/Common/Localizables/UserText+NetworkProtection.swift @@ -33,7 +33,7 @@ extension UserText { static let networkProtectionInviteDialogMessage = NSLocalizedString("network.protection.invite.dialog.message", value: "Enter your invite code to get started.", comment: "Message for the network protection invite dialog") static let networkProtectionInviteFieldPrompt = NSLocalizedString("network.protection.invite.field.prompt", value: "Code", comment: "Prompt for the network protection invite code text field") static let networkProtectionInviteSuccessTitle = NSLocalizedString("network.protection.invite.success.title", value: "Success! You’re in.", comment: "Title for the network protection invite success view") - static let networkProtectionInviteSuccessMessage = NSLocalizedString("network.protection.invite.success.title", value: "Hide your location from websites and conceal your online activity from Internet providers and others on your network.", comment: "Message for the network protection invite success view") + static let networkProtectionInviteSuccessMessage = NSLocalizedString("network.protection.invite.success.title", value: "DuckDuckGo's VPN secures all of your device's Internet traffic anytime, anywhere.", comment: "Message for the network protection invite success view") // MARK: - Navigation Bar Status View diff --git a/DuckDuckGo/ContentBlocker/ContentBlocking.swift b/DuckDuckGo/ContentBlocker/ContentBlocking.swift index 1b897202b9..d29026d189 100644 --- a/DuckDuckGo/ContentBlocker/ContentBlocking.swift +++ b/DuckDuckGo/ContentBlocker/ContentBlocking.swift @@ -156,6 +156,8 @@ final class AppContentBlocking { domainEvent = .adClickAttributionDetected case .adAttributionActive: domainEvent = .adClickAttributionActive + case .adAttributionPageLoads: + domainEvent = .adClickAttributionPageLoads } Pixel.fire(domainEvent, withAdditionalParameters: parameters ?? [:]) diff --git a/DuckDuckGo/Menus/MainMenu.storyboard b/DuckDuckGo/Menus/MainMenu.storyboard index 2d1a38dde4..437c19fa13 100644 --- a/DuckDuckGo/Menus/MainMenu.storyboard +++ b/DuckDuckGo/Menus/MainMenu.storyboard @@ -924,6 +924,10 @@ CQ + + + + diff --git a/DuckDuckGo/NetworkProtection/AppTargets/BothAppTargets/NetworkProtectionSimulateFailureMenu.swift b/DuckDuckGo/NetworkProtection/AppTargets/BothAppTargets/NetworkProtectionSimulateFailureMenu.swift index e92c7dcf50..7c71c1c974 100644 --- a/DuckDuckGo/NetworkProtection/AppTargets/BothAppTargets/NetworkProtectionSimulateFailureMenu.swift +++ b/DuckDuckGo/NetworkProtection/AppTargets/BothAppTargets/NetworkProtectionSimulateFailureMenu.swift @@ -33,8 +33,8 @@ final class NetworkProtectionSimulateFailureMenu: NSMenu { @objc @MainActor final class NetworkProtectionSimulateFailureMenu: NSMenu { - @IBOutlet weak var simulateControllerFailureMenuItem: NSMenuItem? - @IBOutlet weak var simulateTunnelFailureMenuItem: NSMenuItem? + @IBOutlet weak var simulateControllerFailureMenuItem: NSMenuItem! + @IBOutlet weak var simulateTunnelFailureMenuItem: NSMenuItem! private var simulationOptions: NetworkProtectionSimulationOptions { NetworkProtectionTunnelController.simulationOptions @@ -61,8 +61,8 @@ final class NetworkProtectionSimulateFailureMenu: NSMenu { } override func update() { - simulateControllerFailureMenuItem?.state = simulationOptions.isEnabled(.controllerFailure) ? .on : .off - simulateTunnelFailureMenuItem?.state = simulationOptions.isEnabled(.tunnelFailure) ? .on : .off + simulateControllerFailureMenuItem.state = simulationOptions.isEnabled(.controllerFailure) ? .on : .off + simulateTunnelFailureMenuItem.state = simulationOptions.isEnabled(.tunnelFailure) ? .on : .off } } diff --git a/DuckDuckGo/Statistics/PixelEvent.swift b/DuckDuckGo/Statistics/PixelEvent.swift index af04c0eff5..5b80377b68 100644 --- a/DuckDuckGo/Statistics/PixelEvent.swift +++ b/DuckDuckGo/Statistics/PixelEvent.swift @@ -101,6 +101,7 @@ extension Pixel { case adClickAttributionDetected case adClickAttributionActive + case adClickAttributionPageLoads case emailEnabled case emailDisabled @@ -312,6 +313,9 @@ extension Pixel.Event { case .adClickAttributionActive: return "m_mac_ad_click_active" + case .adClickAttributionPageLoads: + return "m_mac_ad_click_page_loads" + // Deliberately omit the `m_mac_` prefix in order to format these pixels the same way as other platforms case .emailEnabled: return "email_enabled_macos_desktop" case .emailDisabled: return "email_disabled_macos_desktop" diff --git a/DuckDuckGo/Statistics/PixelParameters.swift b/DuckDuckGo/Statistics/PixelParameters.swift index 24037a2476..da9faa3967 100644 --- a/DuckDuckGo/Statistics/PixelParameters.swift +++ b/DuckDuckGo/Statistics/PixelParameters.swift @@ -99,6 +99,7 @@ extension Pixel.Event { .ampBlockingRulesCompilationFailed, .adClickAttributionDetected, .adClickAttributionActive, + .adClickAttributionPageLoads, .emailEnabled, .emailDisabled, .emailUserCreatedAlias, diff --git a/LocalPackages/NetworkProtectionUI/Package.swift b/LocalPackages/NetworkProtectionUI/Package.swift index 7bfeae4ed6..813d0c4532 100644 --- a/LocalPackages/NetworkProtectionUI/Package.swift +++ b/LocalPackages/NetworkProtectionUI/Package.swift @@ -15,7 +15,7 @@ let package = Package( targets: ["NetworkProtectionUI"]) ], dependencies: [ - .package(url: "https://github.com/duckduckgo/BrowserServicesKit", exact: "70.0.0"), + .package(url: "https://github.com/duckduckgo/BrowserServicesKit", exact: "71.0.0"), .package(path: "../SwiftUIExtensions") ], targets: [ diff --git a/LocalPackages/NetworkProtectionUI/Sources/NetworkProtectionUI/Extensions/UserText+NetworkProtectionUI.swift b/LocalPackages/NetworkProtectionUI/Sources/NetworkProtectionUI/Extensions/UserText+NetworkProtectionUI.swift index e70210bcba..ae5f5e67df 100644 --- a/LocalPackages/NetworkProtectionUI/Sources/NetworkProtectionUI/Extensions/UserText+NetworkProtectionUI.swift +++ b/LocalPackages/NetworkProtectionUI/Sources/NetworkProtectionUI/Extensions/UserText+NetworkProtectionUI.swift @@ -19,7 +19,7 @@ import Foundation final class UserText { - static let networkProtectionStatusViewFeatureDesc = NSLocalizedString("network.protection.status.view.feature.description", value: "Hide your location from websites and conceal your online activity from Internet providers and others on your network.", comment: "Feature description shown in NetworkProtection's status view.") + static let networkProtectionStatusViewFeatureDesc = NSLocalizedString("network.protection.status.view.feature.description", value: "DuckDuckGo's VPN secures all of your device's Internet traffic anytime, anywhere.", comment: "Feature description shown in NetworkProtection's status view.") static let networkProtectionStatusViewConnDetails = NSLocalizedString("network.protection.status.view.connection.details", value: "Connection Details", comment: "Connection details label shown in NetworkProtection's status view.") static let networkProtectionStatusViewConnLabel = NSLocalizedString("network.protection.status.view.connection.label", value: "Network Protection", comment: "Connection label shown in NetworkProtection's status view.") static let networkProtectionStatusViewLocation = NSLocalizedString("network.protection.status.view.location", value: "Location", comment: "Location label shown in NetworkProtection's status view.")