diff --git a/Sources/TrackerRadarKit/ContentBlockerRule.swift b/Sources/TrackerRadarKit/ContentBlockerRule.swift index 271f09b..6da763f 100644 --- a/Sources/TrackerRadarKit/ContentBlockerRule.swift +++ b/Sources/TrackerRadarKit/ContentBlockerRule.swift @@ -91,6 +91,10 @@ public struct ContentBlockerRule: Codable, Hashable { return Trigger(urlFilter: filter, unlessDomain: urls, ifDomain: nil, resourceType: nil, loadType: loadTypes, loadContext: nil) } + public static func trigger(urlFilter filter: String, resourceType types: [ResourceType]?, loadTypes: [LoadType]?, loadContext: [LoadContext]?) -> Trigger { + return Trigger(urlFilter: filter, unlessDomain: nil, ifDomain: nil, resourceType: types, loadType: loadTypes, loadContext: loadContext) + } + public static func trigger(urlFilter filter: String, ifDomain domains: [String]?, resourceType types: [ResourceType]?) -> Trigger { return Trigger(urlFilter: filter, unlessDomain: nil, ifDomain: domains, resourceType: types, loadType: [ .thirdParty ], loadContext: nil) } diff --git a/Sources/TrackerRadarKit/ContentBlockerRulesBuilder.swift b/Sources/TrackerRadarKit/ContentBlockerRulesBuilder.swift index 4a3688c..2fa5645 100644 --- a/Sources/TrackerRadarKit/ContentBlockerRulesBuilder.swift +++ b/Sources/TrackerRadarKit/ContentBlockerRulesBuilder.swift @@ -145,7 +145,13 @@ public struct ContentBlockerRulesBuilder { return [ ContentBlockerRule(trigger: .trigger(urlFilter: urlFilter, unlessDomain: trackerData.relatedDomains(for: tracker.owner)?.wildcards(), loadTypes: loadTypes), - action: .block()) ] + action: .block()), + ContentBlockerRule(trigger: .trigger(urlFilter: urlFilter, + resourceType: [.popup], + loadTypes: loadTypes, + loadContext: [.topFrame]), + action: .ignorePreviousRules()) + ] } private func buildRules(fromRule r: KnownTracker.Rule,