1use crate::trie::Trie;
2
3lazy_static::lazy_static! {
4 pub static ref URL_IGNORE_TRIE: Trie = {
6 let mut trie = Trie::new();
7 let patterns = [
8 "https://www.googletagservices.com/tag/",
9 "https://js.hs-analytics.net/analytics/",
10 "https://js.usemessages.com/conversations-embed.js",
11 "https://www.googletagmanager.com/",
12 "https://googletagmanager.com/",
13 "https://cm.g.doubleclick.net/",
14 "https://www.googleoptimize.com/optimize.js?id=GTM",
15 "https://ads.pubmatic.com/AdServer/",
16 "https://js.hsadspixel.net",
17 "https://www.google.com/adsense/",
18 "https://www.googleadservices.com",
19 "https://static.cloudflareinsights.com/",
20 "https://cdn.curalate.com/sites/",
21 "https://adservice.google.com",
22 "https://www.gstatic.com/cv/js/sender/",
23 "https://googleads.g.doubleclick.net",
24 "https://www.google-analytics.com",
25 "https://www.googleanalytics.com",
26 "https://cdn-cookieyes.com/client_data/",
27 "https://iabusprivacy.pmc.com/geo-info.js",
28 "https://support.webtasy.com/scripts/track_visit.php",
29 "https://cookie-cdn.cookiepro.com/consent",
30 "https://a.omappapi.com/app/js/api.min.js",
31 "https://static.hotjar.com/",
32 "https://cdn.eu.amplitude.com/script/",
33 "https://js.hscta.net/cta/current.js",
34 "https://cdn.refersion.com/refersion.js",
35 "https://web.cmp.usercentrics.eu/ui/loader.js",
36 "https://pixeltrack.clientgear.com",
37 "https://events.framer.com/script?v=2",
38 "https://load.sumome.com/",
39 "https://websdk.appsflyer.com/",
40 "https://cdn.mediago.io/js/pixel.js",
41 "https://s.pinimg.com/ct/core.js",
42 "https://www.mongoosemetrics.com/",
43 "https://geolocation-recommendations.shopifyapps.com/",
44 "https://consent.cookiebot.com/uc.js",
45 "https://w.usabilla.com/",
46 "https://consentcdn.cookiebot.com/",
47 "https://plausible.io/api/event",
48 "https://sentry.io/api/",
49 "https://cdn.onesignal.com/",
50 "https://cdn.cookielaw.org/",
51 "https://static.doubleclick.net",
52 "https://tools.luckyorange.com/",
53 "https://cdn.piano.io",
54 "https://px.ads.linkedin.com",
55 "https://cdn.sift.com/s.js",
56 "https://connect.facebook.net",
57 "https://tags.tiqcdn.com",
58 "https://tr.snapchat.com",
59 "https://ads.twitter.com",
60 "https://cdn.segment.com",
61 "https://stats.wp.com",
62 "https://analytics.",
63 "http://analytics.",
64 "https://cdn.cxense.com",
65 "https://cdn.tinypass.com",
66 "https://cd.connatix.com",
67 "https://js.chargebee.com/v2/chargebee.js",
68 "https://consent.cookiebot.com/",
69 "https://platform-api.sharethis.com/js/sharethis.js",
70 "https://js.hsforms.net/forms/embed/v2.js",
71 "https://static.parastorage.com/services/wix-thunderbolt/dist/",
72 "https://static.parastorage.com/services/tag-manager-client/",
73 "https://cdn.consentmanager.net/",
74 "https://static.parastorage.com/services/form-app/",
75 "https://www.datadoghq-browser-agent.com/",
76 "https://b.delivery.consentmanager.net/delivery/",
77 "https://tvem.cdn.turner.com/v2/",
78 "https://image6.pubmatic.com/AdServer/",
79 "https://www.digistore24.com/track/AFFILIATE/",
80 "https://i.cdn.turner.com/ads/adfuel/",
81 "https://featureassets.org",
82 "https://cdn.rudderlabs.com",
83 "https://script.hotjar.com/",
84 "https://cdn.branch.io/branch-latest.min.js",
85 "https://cdn.brcdn.com/v1/",
86 "https://cdn.scarabresearch.com/js/",
87 "https://cdn.insurads.com/",
88 "https://cdn.segment.com/",
89 "https://analytics.tiktok.com/",
90 "https://cdn-ukwest.onetrust.com",
91 "https://cdn.onetrust.com",
92 "https://services.insurads.com/",
93 "https://platform.iteratehq.com/loader.js",
94 "https://s.amazon-adsystem.com/",
95 "https://ts.amazon-adsystem.com/",
96 "https://tracking.g2crowd.com/attribution_tracking/conversions/",
97 "https://static.criteo.net/",
98 "https://dynamic.criteo.com/",
99 "https://tags.creativecdn.com/",
100 "https://static.ads-twitter.com/uwt.js",
101 "https://amplify.outbrain.com/cp/obtp.js",
102 "https://js.hsadspixel.net/fb.js",
103 "https://js.hs-banner.com/v2/",
104 "https://www.dwin1.com/2134.js",
105 "https://browser.sentry-cdn.com/",
106 "https://www.dianomi.com/js/contextfeed.js",
107 "https://a.pub.network/",
108 "https://cdn.quantummetric.com/qscripts/",
109 "https://wix-engage-visitors-prod-13.firebaseio.com/",
110 "https://c.amazon-adsystem.com/aax2/apstag.js",
111 "https://www.clarity.ms/tag/",
112 "https://cdn.callrail.com/companies/",
113 "https://tru.am/scripts/custom/",
114 "https://js.zi-scripts.com/zi-tag.js",
115 "https://tag.getamigo.io/js/",
116 "https://s.go-mpulse.net/boomerang/",
117 "https://tag.aticdn.net/piano-analytics.js",
118 "https://cdn.trustcommander.net/privacy/",
119 "https://img1.wsimg.com/traffic-assets/js/tccl-tti.min.js",
120 "https://img1.wsimg.com/signals/js/clients/scc-c2/scc-c2.min.js",
121 "https://beacon.riskified.com/",
122 "https://connect.facebook.net/en_US/fbevents.js",
123 "https://cdn.shopify.com/shopifycloud/boomerang/shopify-boomerang-1.0.0.min.js",
124 "https://cdn-ukwest.onetrust.com/scripttemplates/otSDKStub.js",
125 "https://tag.marinsm.com/serve/",
126 "https://acdn.adnxs.com/ast/ast.js",
127 "https://log.medietall.no/analytics.v2.js",
128 "https://adsdk.microsoft.com/ast/ast.js",
129 "https://schibsted-cdn.relevant-digital.com/static/tags/",
130 "https://sdk.privacy-center.org/",
131 "https://bat.bing.net",
132 "https://tpc.googlesyndication.com/",
133 "https://cdn.petametrics.com/",
134 "https://cdn.doubleverify.com/",
135 "https://assets.poool.fr/engage.min.js",
136 "https://www.facebook.com/v17.0/plugins/like.php?",
137 "https://gum.criteo.com",
138 "https://js-sec.indexww.com",
139 "https://eus.rubiconproject.com/",
140 "https://eb2.3lift.com/",
141 "https://acdn.adnxs.com/",
142 "https://ssc-cms.33across.com/",
143 "https://static.addtoany.com/menu/",
144 "https://www.gstatic.com/cast/sdk/libs/sender/1.0/cast_framework.js",
145 "https://www.gstatic.com/eureka/clank/131/cast_sender.js",
146 "https://static.adsafeprotected.com/",
147 "https://ssum-sec.casalemedia.com/usermatch",
148 "https://cdn.brandmetrics.com/scripts/",
149 "https://cdn.confiant-integrations.net/",
150 "https://www.b2i.us/b2i/",
151 "https://acsbapp.com/apps/app/dist/js/app.js",
152 "https://cdn.doofinder.com/livelayer/",
153 "https://load.sumo.com/",
154 "https://cdn11.bigcommerce.com/",
155 "https://na.shgcdn3.com/collector.js",
156 "https://microapps.bigcommerce.com/bodl-events/index.js",
157 "https://checkout-sdk.bigcommerce.com/v1/loader.js",
158 "https://cdn.callrail.com/companies/",
159 "https://www.webtraxs.com/trxscript.php",
160 "https://diffuser-cdn.app-us1.com/diffuser/diffuser.js",
161 "https://imasdk.googleapis.com/js/sdkloader/ima3.js",
162 "https://cdn.registerdisney.go.com/v4/responder.js",
163 "https://cdn.registerdisney.go.com/v4/OneID.js",
164 "https://u5.investingchannel.com/static/uat.js",
165 "https://diffuser-cdn.app-us1.com/diffuser/diffuser.js",
166 "https://www.clarity.ms/tag/",
167 "https://js-agent.newrelic.com/",
168 "https://bat.bing.com/bat.js",
169 "https://p.yotpo.com/i?",
170 "https://shopify-init.blackcrow.ai/",
171 "https://js.adsrvr.org/up_loader.1.1.0.js",
172 "https://t.cfjump.com/tag/",
173 "https://tag.wknd.ai/",
174 "https://bpi.zip.co/trx/3.3.0.js",
175 "https://s1.hdslb.com/bfs/cm/cm-sdk/static/js/track-collect.js",
176 "https://consent.trustarc.com/",
177 "https://cdn-sitegainer.com/",
178 "https://yob9p0yb4y.kameleoon.eu/",
179 "https://j.6sc.co/6si.min.js",
180 "https://x.clearbitjs.com/v2/",
181 "https://api.clerk.io/v2/log/",
182 "https://cdn.noibu.com/",
183 "https://us1.discourse-cdn.com/cursor1/assets/plugins/discourse-adplugin",
184 "https://static.cloudflareinsights.com/beacon.min.js/",
185 "https://hm.baidu.com/",
186 "https://storage.googleapis.com/lr-marketing-js/lr-web-analytics/",
187 "https://unpkg.zhimg.com/@efe/zhad-tracker",
188 "https://tracking.g2crowd.com/attribution_tracking/",
189 "https://snap.licdn.com/",
190 "https://m.servedby-buysellads.com/monetization.it.js",
191 "https://cdn.metadata.io/site-insights.js",
192 "https://www.ist-track.com/",
193 "https://www.redditstatic.com/ads/",
194 "https://verifi.podscribe.com/",
195 "https://script.crazyegg.com/",
196 "https://cdn.iubenda.com/",
197 "https://bundle.5gtb.com/",
198 "https://d34r8q7sht0t9k.cloudfront.net/tag.js",
199 "https://pagead2.googlesyndication.com/",
200 "https://a.klaviyo.com/onsite/track-analytics",
201 "https://apps.bazaarvoice.com/analytics/bv-analytics.js",
202 "https://mab.chartbeat.com/mab_strategy/",
203 "https://c.amazon-adsystem.com/",
204 "https://rumcdn.geoedge.be/",
205 "https://assets.adobedtm.com/",
206 "https://macro.adnami.io/macro/spec/adsm.macro.",
207 "https://log.medietall.no/analytics.js",
208 "https://cl-eu2.k5a.io/",
209 "https://cdn.siftscience.com/s.js",
210 "https://cdn.segment.com/analytics.js",
211 "https://lwadm.com/lw/pbjs?",
212 "https://cl.k5a.io/",
213 "https://cdn-cookieyes.com/",
214 "https://s.kk-resources.com/leadtag.js",
215 "https://app.optibase.io/script.js",
216 "https://nexus.ensighten.com/",
217 "https://c.oracleinfinity.io/acs/account/fp3kyrmvtg/js/prod/odc.js",
218 "https://static-tracking.klaviyo.com/",
219 "https://cdn-widgetsrepository.yotpo.com/",
220 "https://a.klaviyo.com/onsite/track-analytics?",
221 "https://klaviyo.com/onsite/track-analytics?",
222 "https://cdn.cookielaw.org/scripttemplates/",
223 "https://s2.go-mpulse.net/",
224 "https://pbs.yahoo.com/",
225 "https://img1.wsimg.com/",
226 "https://invitejs.trustpilot.com/tp.min.js",
227 "https://ads.pubmatic.com/AdServer/js/",
228 "https://widgets.outbrain.com/nanoWidget/externals/obPixelFrame/obPixelFrame.js",
229 "https://widgets.outbrain.com/external/externals/intentiq.js",
230 "https://applets.ebxcdn.com/ebx.js",
231 "https://cdn.yektanet.com/superscript/",
232 "https://cdn.fuseplatform.net/publift/tags/",
233 "https://tag.rmp.rakuten.com/",
234 "https://analytics-api.",
235 "https://cdn.corvidae.ai/pixel.min.js",
236 "https://app.popt.in/pixel.js",
237 "https://js-agent.newrelic.com",
238 "https://js-eu1.hs-analytics.net/analytics/",
239 "https://js-eu1.hs-banner.com/v2/",
240 "https://static.doubleclick.net/instream/ad_status.js",
241 "ssl.cf1.rackcdn.com/stf.js",
242 "https://code.etracker.com/code/e.js",
243 "https://geo.privacymanager.io/",
244 "https://script.dotmetrics.net/",
245 "https://delivery.consentmanager.net/delivery/",
246 "https://mc.yandex.ru/metrika/tag.js",
247 "https://cdn.debugbear.com/",
248 "https://stats.wp.com/e-",
249 "https://public.servenobid.com/partner/",
250 "https://sb.scorecardresearch.com/beacon.js",
251 "https://cdn.pdst.fm/ping.min.js",
252 "https://www.clarity.ms/tag/shopify/",
253 "https://static.klaviyo.com/onsite/js/",
254 "https://a.klaviyo.com/media/js/",
255 "https://cdn.intelligems.io/esm/",
256 "https://cdn.privacy-mgmt.com/unified/wrapperMessagingWithoutDetection.js",
257 "https://client.aps.amazon-adsystem.com/publisher.js",
258 "https://s.go-mpulse.net/",
259 "https://assets.trendii.com/pixel/main.js",
260 "https://tag.wknd.ai/",
261 "https://try.abtasty.com/",
262 "https://tags.tiqcdn.com/utag/",
263 "https://assets.squarespace.com/universal/scripts-compressed/performance-",
264 "https://assets.squarespace.com/universal/scripts-compressed/async-gdpr-cookie-banner-",
265 "https://cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.0.3/cookieconsent.min.js",
266 "https://libs.coremetrics.com/eluminate.js",
267 "https://c.webtrends-optimize.com/acs/accounts/",
268 "https://cmp.inmobi.com/choice/",
269 "https://p11.techlab-cdn.com/",
270 "/scripts/matomo/",
271 "/js/exponea.min.js",
272 "/eBootsStorefrontAssetStore/javascript/Analytics.js",
273 "/eu_cookie_compliance/js/eu_cookie_compliance.min.js",
274 "/privacy-banner/storefront-banner.js",
275 "/consent-tracking-api/v0.1/consent-tracking-api.js",
276 "go-mpulse.net/boomerang",
277 ".siteintercept.qualtrics.com",
278 ".sharethis.com",
279 ".cdn4.forter.com",
280 ".newrelic.com",
281 ".googlesyndication.com",
282 ".amazon-adsystem.com",
283 ".onetrust.com",
284 "sc.omtrdc.net",
285 "doubleclick.net",
286 "hotjar.com",
287 "datadome.com",
288 "datadog-logs-us.js",
289 "tinypass.min.js",
290 "tracker.js",
291 "tracker.min.js",
292 "matomo.js",
293 ".airship.com",
294 ".adlightning.com",
295 ".lab.amplitude.",
296 "privacy-notice.js",
298 "cookie_consent.js",
299 "tracking.js",
300 "accept-cookie.js",
301 "privacy_cookie.js",
302 "cast_sender.js",
304 "eu_cookie_compliance.js",
305 "eu_cookie_compliance.min.js",
306 "plugins/cookie-law-info/legacy/",
307 "ads.js",
308 "ads.min.js",
309 "insight.min.js",
310 "assets/TrackingPixel",
311 "cookieconsent.min.js",
312 "cookieconsent.js",
313 "adsbygoogle.js",
314 "otBannerSdk.js",
315 "otBannerSdk.min.js",
316 "tracking.min.js",
317 "trackings-min.",
318 "analytics.min.js",
319 "analytics.js", "https://ads.",
321 "http://ads.",
322 ".pubmatic.com/AdServer/",
323 "https://tracking.",
324 "http://tracking.",
325 "https://static-tracking.",
326 ];
332 for pattern in &patterns {
333 trie.insert(pattern);
334 }
335 trie
336 };
337
338 pub static ref URL_IGNORE_EMBEDED_TRIE: Trie = {
340 let mut trie = Trie::new();
341 let patterns = [
342 "https://www.youtube.com/embed/", "https://www.google.com/maps/embed?", "https://maps.google.com", "https://player.vimeo.com/video/", "https://player.vimeo.com/api/player.js", "https://open.spotify.com/embed/", "https://w.soundcloud.com/player/", "https://platform.twitter.com/embed/", "https://www.instagram.com/embed.js", "https://www.facebook.com/plugins/", "https://cdn.embedly.com/widgets/", "https://player.twitch.tv/", "https://maps.googleapis.com/maps/", "https://www.youtube.com/player_api", "https://consentcdn.cookiebot.com", "https://www.youtube.com/iframe_api", "https://f.vimeocdn.com", "https://i.vimeocdn.com/",
360 "https://image2.pubmatic.com/AdServer/",
361 "https://ads.pubmatic.com/AdServer/js/",
362 "https://cdn.taboola.com/libtrc/static/topics/",
363 "https://pm-widget.taboola.com/",
364 "https://p.cquotient.com/pebble",
365 "https://globale-analytics-sdk.global-e.com/PROD/bundle.js",
366 "https://gum.criteo.com/syncframe",
367 "https://cdn.heapanalytics.com/js/",
368 "https://cdn.intellimize.co/",
369 "https://td.doubleclick.net/td/",
370 "https://gum.criteo.com/syncframe?",
371 "https://js.datadome.co/",
372 "https://www.googletagmanager.com/",
373 "setup-intercom-monitoring.js",
374 "setup-sentry.js",
375 "cast_sender.js",
376 "https://vercel.live/api/",
379
380 "https://shop.app/pay/hop?analytics_trace_id",
382 "https://cdn.readme.io/public/",
384 "https://use.fontawesome.com/",
386 "https://insight.adsrvr.org/track/",
388 "http://www.google-analytics.com/ga.js",
389
390 ".optimizely.com/client_storage/",
391 "cxense.com/",
392 "https://tr.snapchat.com/",
394 "https://buy.tinypass.com",
395 "https://nimbleplot.com/",
396 "https://my.actiondata.co/js/tracker.php",
397 "https://ajax.googleapis.com/ajax/libs/webfont/",
398 "http://cdn2.editmysite.com/",
399 "https://cmp.osano.com/",
400 "https://api.exponea.com/js/service-worker.min.js",
401 "https://kit.fontawesome.com/",
403 "https://perf-na1.hsforms.com/embed/",
404 "https://use.typekit.net",
405 ".amplitude.com",
406 ".rudderstack.com",
407 "https://cdn.tailwindcss.com",
409 ".sharethis.com",
411 "amazon-adsystem.com",
412 ".vimeocdn.com",
413 "g.doubleclick.net",
414 "https://securepubads.g.doubleclick.net",
415 "googlesyndication.com",
416 "adsafeprotected.com",
417 "analytics.min.js",
418 ".googlesyndication.com/safeframe/",
420 "/ccpa/user-consent.min.js",
422 "consent-manager",
423 "/cookiebanner/js/",
424 "cookielaw.org",
425 "bugsnag.min.js",
426 "otBannerSdk.js",
428 "privacy-notice.js",
429 ".ingest.sentry.io/api",
430 ".ssl-images-amazon.com/images/",
432 ];
433 for pattern in &patterns {
434 trie.insert(pattern);
435 }
436 trie
437 };
438
439 pub static ref URL_IGNORE_SCRIPT_BASE_PATHS: Trie = {
441 let mut trie = Trie::new();
442 let patterns = [
443 "wp-content/plugins/cookie-law-info",
444 "wp-content/plugins/borlabs-cookie/",
445 "wp-content/js/rlt-proxy.js",
446 "wp-admin/rest-proxy/",
447 "wp-content/mu-plugins/a8c-analytics/",
448 "analytics/",
449 "cookie-tracking",
450 ];
451 for pattern in &patterns {
452 trie.insert(pattern);
453 }
454 trie
455 };
456
457 pub static ref URL_IGNORE_SCRIPT_STYLES_PATHS: Trie = {
459 let mut trie = Trie::new();
460 let patterns = [
461 "wp-content/themes/",
462 "wp-content/plugins/dizo-image-hover/",
463 "wp-content/plugins/supreme-modules-pro-for-divi/",
464 "wp-content/plugins/page-builder-pmc/",
465 "wp-content/plugins/contact-form-7/",
466 "wp-content/plugins/responsive-lightbox/",
467 "wp-content/cache/breeze-minification/",
468 "wp-includes/js/mediaelement",
469 "wp-content/plugins/gravityforms/",
470 "wp-content/plugins/wp-rocket/assets/js/lazyload/",
471 "wp-content/plugins/w3-total-cache/",
472 "wp-content/js/bilmur.min.js",
473 "npm/bootstrap@"
474 ];
475 for pattern in &patterns {
476 trie.insert(pattern);
477 }
478 trie
479 };
480
481 pub static ref URL_IGNORE_TRIE_PATHS: Trie = {
483 let mut trie = Trie::new();
484 let patterns = [
485 "privacy-notice.js",
487 "tracking.js",
488 "track.js",
489 "ads.js",
490 "analytics.js",
491
492 "privacy-notice.min.js",
494 "tracking.min.js",
495 "track.min.js",
496 "ads.min.js",
497 "analytics.min.js",
498
499 "otSDKStub.js",
500 "otBannerSdk.js",
501 "_vercel/insights/script.js",
502 "analytics.", ];
504 for pattern in &patterns {
505 trie.insert(pattern);
506 }
507 trie
508 };
509
510}
511
512#[cfg(test)]
513mod tests {
514 use super::*;
515
516 #[test]
517 fn test_url_ignore_trie_contains() {
518 let positive_cases = vec![
520 "https://www.googletagservices.com/tag/",
521 "https://www.google-analytics.com",
522 "https://www.googleanalytics.com",
523 ".newrelic.com",
524 "privacy-notice.js",
525 ];
526
527 let negative_cases = vec![
529 "https://not-a-tracked-url.com/script.js",
530 "https://google.com",
531 ];
532
533 for case in positive_cases {
534 assert!(
535 URL_IGNORE_TRIE.contains_prefix(case),
536 "Trie should contain: {}",
537 case
538 );
539 }
540
541 for case in negative_cases {
542 assert!(
543 !URL_IGNORE_TRIE.contains_prefix(case),
544 "Trie should not contain: {}",
545 case
546 );
547 }
548 }
549
550 #[test]
551 fn test_url_ignore_embedded_trie_contains() {
552 let positive_cases = vec![
554 "https://www.youtube.com/embed/",
555 "https://www.google.com/maps/embed?",
556 ".amplitude.com",
557 ];
558
559 let negative_cases = vec![
561 "https://secure-site.com/resource.js",
562 "https://example.com/embed.js",
563 ];
564
565 for case in positive_cases {
566 assert!(
567 URL_IGNORE_EMBEDED_TRIE.contains_prefix(case),
568 "Trie should contain: {}",
569 case
570 );
571 }
572
573 for case in negative_cases {
574 assert!(
575 !URL_IGNORE_EMBEDED_TRIE.contains_prefix(case),
576 "Trie should not contain: {}",
577 case
578 );
579 }
580 }
581
582 #[test]
583 fn test_url_ignore_script_base_paths_contains() {
584 let positive_cases = vec!["wp-content/plugins/cookie-law-info", "analytics/"];
586
587 let negative_cases = vec![
589 "wp-content/some-untracked-plugin/",
590 "random/path/analytics.js",
591 ];
592
593 for case in positive_cases {
594 assert!(
595 URL_IGNORE_SCRIPT_BASE_PATHS.contains_prefix(case),
596 "Trie should contain: {}",
597 case
598 );
599 }
600
601 for case in negative_cases {
602 assert!(
603 !URL_IGNORE_SCRIPT_BASE_PATHS.contains_prefix(case),
604 "Trie should not contain: {}",
605 case
606 );
607 }
608 }
609
610 #[test]
611 fn test_url_ignore_script_style_paths_contains() {
612 let positive_cases = vec!["wp-content/themes/", "npm/bootstrap@"];
614
615 let negative_cases = vec![
617 "wp-content/some-other-theme/",
618 "wp-content/plugins/untracked-plugin/",
619 ];
620
621 for case in positive_cases {
622 assert!(
623 URL_IGNORE_SCRIPT_STYLES_PATHS.contains_prefix(case),
624 "Trie should contain: {}",
625 case
626 );
627 }
628
629 for case in negative_cases {
630 assert!(
631 !URL_IGNORE_SCRIPT_STYLES_PATHS.contains_prefix(case),
632 "Trie should not contain: {}",
633 case
634 );
635 }
636 }
637
638 #[test]
639 fn test_url_ignore_trie_paths_contains() {
640 let positive_cases = vec!["privacy-notice.js", "tracking.js"];
642
643 let negative_cases = vec!["non-ignored.js", "non-related/tracking.js"];
645
646 for case in positive_cases {
647 assert!(
648 URL_IGNORE_TRIE_PATHS.contains_prefix(case),
649 "Trie should contain: {}",
650 case
651 );
652 }
653
654 for case in negative_cases {
655 assert!(
656 !URL_IGNORE_TRIE_PATHS.contains_prefix(case),
657 "Trie should not contain: {}",
658 case
659 );
660 }
661 }
662}