diff options
Diffstat (limited to 'components/selectors/context.rs')
-rw-r--r-- | components/selectors/context.rs | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/components/selectors/context.rs b/components/selectors/context.rs index 31ce04b37a1..46991d349ce 100644 --- a/components/selectors/context.rs +++ b/components/selectors/context.rs @@ -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(), } |