mirror of
https://github.com/servo/servo.git
synced 2025-08-06 06:00:15 +01:00
Introduce an NthIndexCache type and pipe it from ThreadLocalStyleContext to MatchingContext.
Some future refactoring here to pass fewer things as parameters would be nice.
This commit is contained in:
parent
05c03d5104
commit
48466bf876
11 changed files with 83 additions and 24 deletions
|
@ -69,15 +69,22 @@ impl QuirksMode {
|
|||
}
|
||||
}
|
||||
|
||||
/// A cache to speed up matching of nth-index-like selectors.
|
||||
///
|
||||
/// NB: This is just a dummy type right now, it will be fleshed out in later patches.
|
||||
#[derive(Default)]
|
||||
pub struct NthIndexCache(usize);
|
||||
|
||||
/// Data associated with the matching process for a element. This context is
|
||||
/// used across many selectors for an element, so it's not appropriate for
|
||||
/// transient data that applies to only a single selector.
|
||||
#[derive(Clone)]
|
||||
pub struct MatchingContext<'a> {
|
||||
/// Input with the matching mode we should use when matching selectors.
|
||||
pub matching_mode: MatchingMode,
|
||||
/// Input with the bloom filter used to fast-reject selectors.
|
||||
pub bloom_filter: Option<&'a BloomFilter>,
|
||||
/// An optional cache to speed up nth-index-like selectors.
|
||||
nth_index_cache: Option<&'a mut NthIndexCache>,
|
||||
/// Input that controls how matching for links is handled.
|
||||
pub visited_handling: VisitedHandlingMode,
|
||||
/// Output that records whether we encountered a "relevant link" while
|
||||
|
@ -94,12 +101,14 @@ impl<'a> MatchingContext<'a> {
|
|||
/// Constructs a new `MatchingContext`.
|
||||
pub fn new(matching_mode: MatchingMode,
|
||||
bloom_filter: Option<&'a BloomFilter>,
|
||||
nth_index_cache: Option<&'a mut NthIndexCache>,
|
||||
quirks_mode: QuirksMode)
|
||||
-> Self
|
||||
{
|
||||
Self {
|
||||
matching_mode: matching_mode,
|
||||
bloom_filter: bloom_filter,
|
||||
nth_index_cache: nth_index_cache,
|
||||
visited_handling: VisitedHandlingMode::AllLinksUnvisited,
|
||||
relevant_link_found: false,
|
||||
quirks_mode: quirks_mode,
|
||||
|
@ -110,6 +119,7 @@ impl<'a> MatchingContext<'a> {
|
|||
/// Constructs a new `MatchingContext` for use in visited matching.
|
||||
pub fn new_for_visited(matching_mode: MatchingMode,
|
||||
bloom_filter: Option<&'a BloomFilter>,
|
||||
nth_index_cache: Option<&'a mut NthIndexCache>,
|
||||
visited_handling: VisitedHandlingMode,
|
||||
quirks_mode: QuirksMode)
|
||||
-> Self
|
||||
|
@ -119,6 +129,7 @@ impl<'a> MatchingContext<'a> {
|
|||
bloom_filter: bloom_filter,
|
||||
visited_handling: visited_handling,
|
||||
relevant_link_found: false,
|
||||
nth_index_cache: nth_index_cache,
|
||||
quirks_mode: quirks_mode,
|
||||
classes_and_ids_case_sensitivity: quirks_mode.classes_and_ids_case_sensitivity(),
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue