<!-- Please describe your changes on the following line: --> --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: --> - [X] `./mach build -d` does not report any errors - [X] `./mach test-tidy` does not report any errors - [X] These changes fix part of the problem we're seeing in https://bugzilla.mozilla.org/show_bug.cgi?id=1367862 <!-- Either: --> - [ ] There are tests for these changes OR - [X] These changes do not require tests because the only impact is on performance and memory. <!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.--> <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> Source-Repo: https://github.com/servo/servo Source-Revision: 429db6a3c617ba147312e245f9a69d170c50d43f
48 lines
1.6 KiB
Rust
48 lines
1.6 KiB
Rust
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
//! Visitor traits for selectors.
|
|
|
|
#![deny(missing_docs)]
|
|
|
|
use attr::NamespaceConstraint;
|
|
use parser::{Combinator, Component, SelectorImpl, SelectorIter};
|
|
|
|
/// A trait to visit selector properties.
|
|
///
|
|
/// All the `visit_foo` methods return a boolean indicating whether the
|
|
/// traversal should continue or not.
|
|
pub trait SelectorVisitor {
|
|
/// The selector implementation this visitor wants to visit.
|
|
type Impl: SelectorImpl;
|
|
|
|
/// Visit an attribute selector that may match (there are other selectors
|
|
/// that may never match, like those containing whitespace or the empty
|
|
/// string).
|
|
fn visit_attribute_selector(
|
|
&mut self,
|
|
_namespace: &NamespaceConstraint<&<Self::Impl as SelectorImpl>::NamespaceUrl>,
|
|
_local_name: &<Self::Impl as SelectorImpl>::LocalName,
|
|
_local_name_lower: &<Self::Impl as SelectorImpl>::LocalName,
|
|
) -> bool {
|
|
true
|
|
}
|
|
|
|
/// Visit a simple selector.
|
|
fn visit_simple_selector(&mut self, _: &Component<Self::Impl>) -> bool {
|
|
true
|
|
}
|
|
|
|
/// Visits a complex selector.
|
|
///
|
|
/// Gets the combinator to the right of the selector, or `None` if the
|
|
/// selector is the rightmost one.
|
|
fn visit_complex_selector(&mut self,
|
|
_: SelectorIter<Self::Impl>,
|
|
_combinator_to_right: Option<Combinator>)
|
|
-> bool {
|
|
true
|
|
}
|
|
}
|