Skip to content

Commit 98aa69f

Browse files
authored
Merge pull request #425 from brave/code_structure
Code structure
2 parents 7919bdd + d5a6a67 commit 98aa69f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+11854
-8953
lines changed

.gitattributes

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
*.rs text eol=lf

.github/workflows/ci.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ jobs:
2727
- name: Checkout
2828
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
2929

30+
- name: Check formatting
31+
run: cargo fmt --check
32+
3033
- name: Cargo build 'adblock' package
3134
run: cargo build --all-features --all-targets
3235

benches/bench_cosmetic_matching.rs

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -57,13 +57,7 @@ fn by_classes_ids(c: &mut Criterion) {
5757
let (_, cosmetic_filters) = parse_filters(&rules, false, FilterFormat::Standard);
5858
let cfcache = CosmeticFilterCache::from_rules(cosmetic_filters);
5959
let exceptions = Default::default();
60-
b.iter(|| {
61-
cfcache.hidden_class_id_selectors(
62-
&["ad"],
63-
&["ad"],
64-
&exceptions,
65-
)
66-
})
60+
b.iter(|| cfcache.hidden_class_id_selectors(&["ad"], &["ad"], &exceptions))
6761
});
6862
group.bench_function("many lists", move |b| {
6963
let rules = rules_from_lists(&[
@@ -75,13 +69,7 @@ fn by_classes_ids(c: &mut Criterion) {
7569
let (_, cosmetic_filters) = parse_filters(&rules, false, FilterFormat::Standard);
7670
let cfcache = CosmeticFilterCache::from_rules(cosmetic_filters);
7771
let exceptions = Default::default();
78-
b.iter(|| {
79-
cfcache.hidden_class_id_selectors(
80-
&["ad"],
81-
&["ad"],
82-
&exceptions,
83-
)
84-
})
72+
b.iter(|| cfcache.hidden_class_id_selectors(&["ad"], &["ad"], &exceptions))
8573
});
8674
group.bench_function("many matching classes and ids", move |b| {
8775
let rules = rules_from_lists(&[

benches/bench_matching.rs

Lines changed: 29 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ use criterion::*;
22

33
use serde::{Deserialize, Serialize};
44

5-
use adblock::Engine;
65
use adblock::blocker::{Blocker, BlockerOptions};
76
use adblock::request::Request;
87
use adblock::resources::ResourceStorage;
98
use adblock::url_parser::parse_url;
9+
use adblock::Engine;
1010

1111
#[path = "../tests/test_utils.rs"]
1212
mod test_utils;
@@ -36,7 +36,7 @@ fn load_requests() -> Vec<TestRequest> {
3636
reqs
3737
}
3838

39-
fn get_blocker(rules: impl IntoIterator<Item=impl AsRef<str>>) -> Blocker {
39+
fn get_blocker(rules: impl IntoIterator<Item = impl AsRef<str>>) -> Blocker {
4040
let (network_filters, _) = adblock::lists::parse_filters(rules, false, Default::default());
4141

4242
let blocker_options = BlockerOptions {
@@ -61,7 +61,11 @@ fn bench_rule_matching(engine: &Engine, requests: &Vec<TestRequest>) -> (u32, u3
6161
(matches, passes)
6262
}
6363

64-
fn bench_matching_only(blocker: &Blocker, resources: &ResourceStorage, requests: &Vec<Request>) -> (u32, u32) {
64+
fn bench_matching_only(
65+
blocker: &Blocker,
66+
resources: &ResourceStorage,
67+
requests: &Vec<Request>,
68+
) -> (u32, u32) {
6569
let mut matches = 0;
6670
let mut passes = 0;
6771
requests.iter().for_each(|parsed| {
@@ -78,10 +82,7 @@ fn bench_matching_only(blocker: &Blocker, resources: &ResourceStorage, requests:
7882

7983
type ParsedRequest = (String, String, String, String, bool);
8084

81-
fn bench_rule_matching_browserlike(
82-
blocker: &Engine,
83-
requests: &Vec<ParsedRequest>,
84-
) -> (u32, u32) {
85+
fn bench_rule_matching_browserlike(blocker: &Engine, requests: &Vec<ParsedRequest>) -> (u32, u32) {
8586
let mut matches = 0;
8687
let mut passes = 0;
8788
requests.iter().for_each(
@@ -141,9 +142,7 @@ fn rule_match(c: &mut Criterion) {
141142
fn rule_match_parsed_el(c: &mut Criterion) {
142143
let mut group = c.benchmark_group("rule-match-parsed");
143144

144-
let rules = rules_from_lists(&[
145-
"data/easylist.to/easylist/easylist.txt",
146-
]);
145+
let rules = rules_from_lists(&["data/easylist.to/easylist/easylist.txt"]);
147146
let requests = load_requests();
148147
let requests_parsed: Vec<_> = requests
149148
.into_iter()
@@ -221,9 +220,7 @@ fn serialization(c: &mut Criterion) {
221220
b.iter(|| assert!(engine.serialize_raw().unwrap().len() > 0))
222221
});
223222
group.bench_function("el", move |b| {
224-
let full_rules = rules_from_lists(&[
225-
"data/easylist.to/easylist/easylist.txt",
226-
]);
223+
let full_rules = rules_from_lists(&["data/easylist.to/easylist/easylist.txt"]);
227224

228225
let engine = Engine::from_rules(full_rules, Default::default());
229226
b.iter(|| assert!(engine.serialize_raw().unwrap().len() > 0))
@@ -258,9 +255,7 @@ fn deserialization(c: &mut Criterion) {
258255
})
259256
});
260257
group.bench_function("el", move |b| {
261-
let full_rules = rules_from_lists(&[
262-
"data/easylist.to/easylist/easylist.txt",
263-
]);
258+
let full_rules = rules_from_lists(&["data/easylist.to/easylist/easylist.txt"]);
264259

265260
let engine = Engine::from_rules(full_rules, Default::default());
266261
let serialized = engine.serialize_raw().unwrap();
@@ -294,9 +289,7 @@ fn rule_match_browserlike_comparable(c: &mut Criterion) {
294289
group.throughput(Throughput::Elements(requests_len));
295290
group.sample_size(20);
296291

297-
fn requests_parsed(
298-
requests: &[TestRequest],
299-
) -> Vec<(String, String, String, String, bool)> {
292+
fn requests_parsed(requests: &[TestRequest]) -> Vec<(String, String, String, String, bool)> {
300293
requests
301294
.iter()
302295
.map(|r| {
@@ -354,10 +347,10 @@ fn rule_match_browserlike_comparable(c: &mut Criterion) {
354347
b.iter(|| bench_rule_matching_browserlike(&engine, &requests))
355348
});
356349
group.bench_function("brave-list", |b| {
357-
let rules = rules_from_lists(&["data/brave/brave-main-list.txt"]);
358-
let engine = Engine::from_rules_parametrised(rules, Default::default(), false, true);
359-
b.iter(|| bench_rule_matching_browserlike(&engine, &requests))
360-
});
350+
let rules = rules_from_lists(&["data/brave/brave-main-list.txt"]);
351+
let engine = Engine::from_rules_parametrised(rules, Default::default(), false, true);
352+
b.iter(|| bench_rule_matching_browserlike(&engine, &requests))
353+
});
361354

362355
group.finish();
363356
}
@@ -376,21 +369,20 @@ fn rule_match_first_request(c: &mut Criterion) {
376369
)];
377370

378371
group.bench_function("brave-list", |b| {
379-
b.iter_custom(
380-
|iters| {
381-
let mut total_time = std::time::Duration::ZERO;
382-
for _ in 0..iters {
383-
let rules = rules_from_lists(&["data/brave/brave-main-list.txt"]);
384-
let engine = Engine::from_rules_parametrised(rules, Default::default(), false, true);
385-
386-
// Measure only the matching time, skip setup and destruction
387-
let start_time = std::time::Instant::now();
388-
bench_rule_matching_browserlike(&engine, &requests);
389-
total_time += start_time.elapsed();
390-
}
391-
total_time
372+
b.iter_custom(|iters| {
373+
let mut total_time = std::time::Duration::ZERO;
374+
for _ in 0..iters {
375+
let rules = rules_from_lists(&["data/brave/brave-main-list.txt"]);
376+
let engine =
377+
Engine::from_rules_parametrised(rules, Default::default(), false, true);
378+
379+
// Measure only the matching time, skip setup and destruction
380+
let start_time = std::time::Instant::now();
381+
bench_rule_matching_browserlike(&engine, &requests);
382+
total_time += start_time.elapsed();
392383
}
393-
)
384+
total_time
385+
})
394386
});
395387

396388
group.finish();

benches/bench_memory.rs

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44
* You can obtain one at https://mozilla.org/MPL/2.0/. */
55

66
use criterion::*;
7+
use serde::{Deserialize, Serialize};
78
use std::alloc::{GlobalAlloc, Layout, System};
89
use std::sync::atomic::{AtomicUsize, Ordering};
9-
use serde::{Deserialize, Serialize};
1010

11-
use adblock::Engine;
1211
use adblock::request::Request;
12+
use adblock::Engine;
1313

1414
#[path = "../tests/test_utils.rs"]
1515
mod test_utils;
@@ -110,15 +110,15 @@ fn bench_memory_usage(c: &mut Criterion) {
110110
let mut result = 0;
111111
b.iter_custom(|iters| {
112112
for _ in 0..iters {
113-
ALLOCATOR.reset();
114-
let rules = rules_from_lists(&["data/brave/brave-main-list.txt"]);
115-
let engine = Engine::from_rules(rules, Default::default());
113+
ALLOCATOR.reset();
114+
let rules = rules_from_lists(&["data/brave/brave-main-list.txt"]);
115+
let engine = Engine::from_rules(rules, Default::default());
116116

117-
noise += 1; // add some noise to make criterion happy
118-
result += ALLOCATOR.current_usage() + noise;
117+
noise += 1; // add some noise to make criterion happy
118+
result += ALLOCATOR.current_usage() + noise;
119119

120-
// Prevent engine from being optimized
121-
criterion::black_box(&engine);
120+
// Prevent engine from being optimized
121+
criterion::black_box(&engine);
122122
}
123123

124124
// Return the memory usage as a Duration
@@ -134,15 +134,15 @@ fn bench_memory_usage(c: &mut Criterion) {
134134
let rules = rules_from_lists(&["data/brave/brave-main-list.txt"]);
135135
let engine = Engine::from_rules(rules, Default::default());
136136

137-
for request in first_1000_requests.clone() {
138-
criterion::black_box(engine.check_network_request(&request.into()));
139-
}
137+
for request in first_1000_requests.clone() {
138+
criterion::black_box(engine.check_network_request(&request.into()));
139+
}
140140

141-
noise += 1; // add some noise to make criterion happy
142-
result += ALLOCATOR.current_usage() + noise;
141+
noise += 1; // add some noise to make criterion happy
142+
result += ALLOCATOR.current_usage() + noise;
143143

144-
// Prevent engine from being optimized
145-
criterion::black_box(&engine);
144+
// Prevent engine from being optimized
145+
criterion::black_box(&engine);
146146
}
147147

148148
// Return the memory usage as a Duration

benches/bench_redirect_performance.rs

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,7 @@ fn get_redirect_rules() -> Vec<NetworkFilter> {
6666
.into_iter()
6767
.filter(NetworkFilter::is_redirect)
6868
.filter(NetworkFilter::also_block_redirect)
69-
.filter(|rule| {
70-
rule.modifier_option.as_ref().unwrap() != "none"
71-
})
69+
.filter(|rule| rule.modifier_option.as_ref().unwrap() != "none")
7270
.enumerate()
7371
.map(|(index, mut rule)| {
7472
rule.mask.insert(NetworkFilterMask::IS_LEFT_ANCHOR);
@@ -102,8 +100,8 @@ fn build_resources_for_filters(#[allow(unused)] filters: &[NetworkFilter]) -> Re
102100

103101
#[cfg(feature = "resource-assembler")]
104102
{
105-
use std::path::Path;
106103
use adblock::resources::resource_assembler::assemble_web_accessible_resources;
104+
use std::path::Path;
107105

108106
let mut resource_data = assemble_web_accessible_resources(
109107
Path::new("data/test/fake-uBO-files/web_accessible_resources"),
@@ -116,16 +114,14 @@ fn build_resources_for_filters(#[allow(unused)] filters: &[NetworkFilter]) -> Re
116114
)),
117115
);
118116

119-
resource_data
120-
.into_iter()
121-
.for_each(|resource| {
122-
let _res = resources.add_resource(resource);
123-
});
117+
resource_data.into_iter().for_each(|resource| {
118+
let _res = resources.add_resource(resource);
119+
});
124120
}
125121

126122
#[cfg(not(feature = "resource-assembler"))]
127123
{
128-
use adblock::resources::{Resource, ResourceType, MimeType};
124+
use adblock::resources::{MimeType, Resource, ResourceType};
129125

130126
filters
131127
.iter()
@@ -213,19 +209,20 @@ pub fn build_custom_requests(rules: Vec<NetworkFilter>) -> Vec<Request> {
213209

214210
let source_url = format!("https://{}", source_hostname);
215211

216-
Request::new(
217-
&url,
218-
&source_url,
219-
raw_type,
220-
).unwrap()
212+
Request::new(&url, &source_url, raw_type).unwrap()
221213
})
222214
.collect::<Vec<_>>()
223215
}
224216

225217
fn bench_fn(blocker: &Blocker, resources: &ResourceStorage, requests: &[Request]) {
226218
requests.iter().for_each(|request| {
227219
let block_result = blocker.check(&request, &resources);
228-
assert!(block_result.redirect.is_some(), "{:?}, {:?}", request, block_result);
220+
assert!(
221+
block_result.redirect.is_some(),
222+
"{:?}, {:?}",
223+
request,
224+
block_result
225+
);
229226
});
230227
}
231228

benches/bench_rules.rs

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,8 @@ use adblock::blocker::{Blocker, BlockerOptions};
77
mod test_utils;
88
use test_utils::rules_from_lists;
99

10-
static DEFAULT_LISTS: Lazy<Vec<String>> = Lazy::new(|| {
11-
rules_from_lists(&[
12-
"data/easylist.to/easylist/easylist.txt",
13-
]).collect()
14-
});
10+
static DEFAULT_LISTS: Lazy<Vec<String>> =
11+
Lazy::new(|| rules_from_lists(&["data/easylist.to/easylist/easylist.txt"]).collect());
1512

1613
fn bench_string_hashing(filters: &Vec<String>) -> adblock::utils::Hash {
1714
let mut dummy: adblock::utils::Hash = 0;
@@ -81,7 +78,7 @@ fn list_parse(c: &mut Criterion) {
8178
group.finish();
8279
}
8380

84-
fn get_blocker(rules: impl IntoIterator<Item=impl AsRef<str>>) -> Blocker {
81+
fn get_blocker(rules: impl IntoIterator<Item = impl AsRef<str>>) -> Blocker {
8582
let (network_filters, _) = adblock::lists::parse_filters(rules, false, Default::default());
8683

8784
let blocker_options = BlockerOptions {
@@ -100,13 +97,14 @@ fn blocker_new(c: &mut Criterion) {
10097
let easylist_rules: Vec<_> = rules_from_lists(&[
10198
"data/easylist.to/easylist/easylist.txt",
10299
"data/easylist.to/easylist/easyprivacy.txt",
103-
]).collect();
104-
let brave_list_rules: Vec<_> = rules_from_lists(&[
105-
"data/brave/brave-main-list.txt",
106-
]).collect();
100+
])
101+
.collect();
102+
let brave_list_rules: Vec<_> = rules_from_lists(&["data/brave/brave-main-list.txt"]).collect();
107103

108104
group.bench_function("el+ep", move |b| b.iter(|| get_blocker(&easylist_rules)));
109-
group.bench_function("brave-list", move |b| b.iter(|| get_blocker(&brave_list_rules)));
105+
group.bench_function("brave-list", move |b| {
106+
b.iter(|| get_blocker(&brave_list_rules))
107+
});
110108

111109
group.finish();
112110
}

examples/deserialization.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
1-
use adblock::{
2-
Engine,
3-
request::Request,
4-
};
1+
use adblock::{request::Request, Engine};
52

63
use serde::Deserialize;
74

examples/example.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use adblock::{
2-
Engine,
32
lists::{FilterSet, ParseOptions},
43
request::Request,
4+
Engine,
55
};
66

77
fn main() {
@@ -22,7 +22,8 @@ fn main() {
2222
"http://example.com/-advertisement-icon.",
2323
"http://example.com/helloworld",
2424
"image",
25-
).unwrap();
25+
)
26+
.unwrap();
2627
let blocker_result = engine.check_network_request(&request);
2728

2829
println!("Blocker result: {:?}", blocker_result);

0 commit comments

Comments
 (0)