@@ -248,6 +248,8 @@ impl CosmeticFilterCache {
248
248
let mut script_injections = HashMap :: < & str , PermissionMask > :: new ( ) ;
249
249
let mut exceptions = HashSet :: new ( ) ;
250
250
251
+ let mut except_all_scripts = false ;
252
+
251
253
let hashes: Vec < & Hash > = request_entities. iter ( ) . chain ( request_hostnames. iter ( ) ) . collect ( ) ;
252
254
253
255
fn populate_set ( hash : & Hash , source_bin : & HostnameFilterBin < String > , dest_set : & mut HashSet < String > ) {
@@ -308,9 +310,16 @@ impl CosmeticFilterCache {
308
310
prune_set ( hash, & self . specific_rules . unremove , & mut remove_selectors) ;
309
311
// same logic but not using prune_set since strings are unowned, (see above)
310
312
if let Some ( s) = self . specific_rules . uninject_script . get ( hash) {
311
- s. iter ( ) . for_each ( |s| {
313
+ for s in s {
314
+ if s. is_empty ( ) {
315
+ except_all_scripts = true ;
316
+ script_injections. clear ( ) ;
317
+ }
318
+ if except_all_scripts {
319
+ continue ;
320
+ }
312
321
script_injections. remove ( s. as_str ( ) ) ;
313
- } ) ;
322
+ }
314
323
}
315
324
316
325
prune_map ( hash, & self . specific_rules . unstyle , & mut style_selectors) ;
@@ -657,6 +666,7 @@ mod cosmetic_cache_tests {
657
666
"cosmetic.net##+js(nowebrtc.js)" ,
658
667
"g.cosmetic.net##+js(window.open-defuser.js)" ,
659
668
"c.g.cosmetic.net#@#+js(nowebrtc.js)" ,
669
+ "d.g.cosmetic.net#@#+js()" ,
660
670
] ) ;
661
671
let resources = ResourceStorage :: from_resources ( [
662
672
Resource {
@@ -698,6 +708,10 @@ mod cosmetic_cache_tests {
698
708
let out = cfcache. hostname_cosmetic_resources ( & resources, "c.g.cosmetic.net" , false ) ;
699
709
expected. injected_script = "try {\n window.open-defuser.js\n } catch ( e ) { }\n " . to_owned ( ) ;
700
710
assert_eq ! ( out, expected) ;
711
+
712
+ let out = cfcache. hostname_cosmetic_resources ( & resources, "d.g.cosmetic.net" , false ) ;
713
+ expected. injected_script = "" . to_owned ( ) ;
714
+ assert_eq ! ( out, expected) ;
701
715
}
702
716
703
717
#[ test]
0 commit comments