aboutsummaryrefslogtreecommitdiffstats
path: root/components/script
diff options
context:
space:
mode:
authorBobby Holley <bobbyholley@gmail.com>2017-09-20 12:43:29 -0700
committerBobby Holley <bobbyholley@gmail.com>2017-09-20 23:22:38 -0700
commit48466bf8761d3a9c6064eb2b39fc74e790e26cb7 (patch)
treefa7aaab6ebd8c516d1410af8a927e68268c4662e /components/script
parent05c03d5104ae6d0790c153e4fa8df7ac7015db18 (diff)
downloadservo-48466bf8761d3a9c6064eb2b39fc74e790e26cb7.tar.gz
servo-48466bf8761d3a9c6064eb2b39fc74e790e26cb7.zip
Introduce an NthIndexCache type and pipe it from ThreadLocalStyleContext to MatchingContext.
Some future refactoring here to pass fewer things as parameters would be nice.
Diffstat (limited to 'components/script')
-rw-r--r--components/script/dom/element.rs6
-rw-r--r--components/script/dom/node.rs7
2 files changed, 9 insertions, 4 deletions
diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs
index 195884bebab..76990dc9aa6 100644
--- a/components/script/dom/element.rs
+++ b/components/script/dom/element.rs
@@ -2188,7 +2188,8 @@ impl ElementMethods for Element {
Err(_) => Err(Error::Syntax),
Ok(selectors) => {
let quirks_mode = document_from_node(self).quirks_mode();
- let mut ctx = MatchingContext::new(MatchingMode::Normal, None,
+ // FIXME(bholley): Consider an nth-index cache here.
+ let mut ctx = MatchingContext::new(MatchingMode::Normal, None, None,
quirks_mode);
Ok(matches_selector_list(&selectors, &Root::from_ref(self), &mut ctx))
}
@@ -2209,7 +2210,8 @@ impl ElementMethods for Element {
for element in root.inclusive_ancestors() {
if let Some(element) = Root::downcast::<Element>(element) {
let quirks_mode = document_from_node(self).quirks_mode();
- let mut ctx = MatchingContext::new(MatchingMode::Normal, None,
+ // FIXME(bholley): Consider an nth-index cache here.
+ let mut ctx = MatchingContext::new(MatchingMode::Normal, None, None,
quirks_mode);
if matches_selector_list(&selectors, &element, &mut ctx) {
return Ok(Some(element));
diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs
index b83cdcbd37e..6b16cc242db 100644
--- a/components/script/dom/node.rs
+++ b/components/script/dom/node.rs
@@ -363,7 +363,9 @@ impl<'a> Iterator for QuerySelectorIterator {
self.iterator.by_ref().filter_map(|node| {
// TODO(cgaebel): Is it worth it to build a bloom filter here
// (instead of passing `None`)? Probably.
- let mut ctx = MatchingContext::new(MatchingMode::Normal, None,
+ //
+ // FIXME(bholley): Consider an nth-index cache here.
+ let mut ctx = MatchingContext::new(MatchingMode::Normal, None, None,
node.owner_doc().quirks_mode());
if let Some(element) = Root::downcast(node) {
if matches_selector_list(selectors, &element, &mut ctx) {
@@ -754,7 +756,8 @@ impl Node {
Err(_) => Err(Error::Syntax),
// Step 3.
Ok(selectors) => {
- let mut ctx = MatchingContext::new(MatchingMode::Normal, None,
+ // FIXME(bholley): Consider an nth-index cache here.
+ let mut ctx = MatchingContext::new(MatchingMode::Normal, None, None,
self.owner_doc().quirks_mode());
Ok(self.traverse_preorder().filter_map(Root::downcast).find(|element| {
matches_selector_list(&selectors, element, &mut ctx)