diff --git a/src/rust-css b/src/rust-css index 7f9bd3c32ba..3bbe4ed4fc3 160000 --- a/src/rust-css +++ b/src/rust-css @@ -1 +1 @@ -Subproject commit 7f9bd3c32baae72bec864085e81df7773542f790 +Subproject commit 3bbe4ed4fc3d642e1e651ff3d8123c9dca626c22 diff --git a/src/rust-netsurfcss b/src/rust-netsurfcss index 6f7633390e7..cb49f5f7b4a 160000 --- a/src/rust-netsurfcss +++ b/src/rust-netsurfcss @@ -1 +1 @@ -Subproject commit 6f7633390e76a08ee2bb43fafdbe8ba5d0890896 +Subproject commit cb49f5f7b4ae92c70b374b544d6e3f5ab1e3da26 diff --git a/src/servo/css/select_handler.rs b/src/servo/css/select_handler.rs index 02a583e2a08..0ac1ba30b1c 100644 --- a/src/servo/css/select_handler.rs +++ b/src/servo/css/select_handler.rs @@ -40,7 +40,30 @@ impl NodeSelectHandler: SelectHandler { tree::parent(&NodeTree, node) } + // TODO: Use a Bloom filter. + fn named_ancestor_node(node: &Node, name: &str) -> Option { + let mut node = *node; + loop { + let parent = tree::parent(&NodeTree, &node); + match parent { + Some(parent) => { + let mut found = false; + do parent.read |data| { + if name == node_name(data) { + found = true; + } + } + if found { + return Some(parent); + } + node = parent; + } + None => return None + } + } + } + fn node_is_root(node: &Node) -> bool { self.parent_node(node).is_none() } -} \ No newline at end of file +}